Well, although a parser is not simply done but usually an intricate piece of software, here is
- a bash script
- replacing ALL kind of URLs (abc.com; def.org; ghi.de; ...)
- only in "appMar" section
As the URL can assume any shape, we can't rely on a string constant ("URLnn") but need to check for the file structure (the URL is the first entry in the second nesting level).
Try
Code:
#!/bin/bash
#
TGSCT=0
LEVEL=0
URL=""
declare -A RP
RP["a"]=XYZ.com # set up replacement URLs
RP["b"]=YZX.org
RP["c"]=ZXY.biz
while IFS="" read LN # don't destroy original line
do IFS=": " read P1 P2 R <<< $LN # get elements from line; use bashs "here string"
[ "$P1" != "${P1/appMap}" ] && TGSCT=1 # test for the right target section ("appMap")
OLDLVL=$LEVEL # save nesting level
T1=${LN//\{} # compute actual nesting level (based on braces)
T2=${LN//\}}
LEVEL=$((LEVEL + ${#T2} - ${#T1})) # which is count opening braces minus count closing braces
[ "$TGSCT" -eq 0 ] && { echo "$LN"
continue
} # not in right section: print and leave
[ "$OLDLVL" -eq 2 ] && { URL=${P1//\"} # test for nesting level (URL is 2), compute URL w/o double quotes
TMP="$LN" # save URL in variable and total line in temp. var
}
[ "$P1" != "${P1/name}" ] && { NM=${P2//\"} # test for "name" tag, compute name value w/o double quotes
LN="${TMP/$URL/${RP[$NM]}}"$'\n'"$LN"
# replace old URL with new URL
URL=""; } # empty URL variable
[ -z "$URL" ] && echo "$LN" # print only if no URL has been intercepted
[ "$LEVEL" -eq 0 ] && TGSCT=0 # zero nesting level means target section left
done < file # read from json file
This is just straightforward functionality to prove it's working, there's nothing extra like error checking or debugging. If need be, this is left to the reader.
I need help with a perl parsing script. I have some error logs on a windows machine that I need to parse from a text file, but I know nothing about perl. I usually run this bash script on my linux box and it does just what I need. How would I do the same thing with perl and port it to my windows... (2 Replies)
okay i'm going to try to say this uber-simple:
I use dropbox (file-sync service). in order for dropbox sync files, they must be its children eg. somewhere under /home/jzacsh/Dropbox].
I want to now use it to keep my development files in sync across my machines:
easy: just move my dev. files... (2 Replies)
Hi all!
Looking for some help parsing filenames in bash. I have a directory full of files named "livingroom-110111105637.avi". The format is always date and time (yymmddhhmmss). I'm looking to parse the filenames so they are a little more easily readable. Maybe rename them to... (4 Replies)
Hello dear users, here I have a script to manipulate .csv files that are like this originally:
And I need to make a script to delete certain fields. Each field is separated with a comma.
So, here is my script (at least a part of it):
Field $1 is composed of a name, and then a... (5 Replies)
I would like to setup a script that pulls in time/date in two seperate columns, and then name the other columns as listed below:
Column1=Art/TJ output
Column2=Art/TJ output
Column3=TJ output
column4=Art output
Column5=If time/date past 12:00 noon -fail
Colume6=If time/date before... (1 Reply)
Hello,
I would like to modify an existing script of mine that uses a manually defined "MCVERSION" variable and make it define that variable instead based on this JSON file stored online:
https://s3.amazonaws.com/Minecraft.Download/versions/versions.json
Within that JSON, I 'm looking for... (4 Replies)
Hi everyone,
I'm trying to write my first ever shell script, the OS is Raspbian. The code I have written must be executed whenever a certain database has been modified. The database resides on a Windows server to which I have a mount point, and I have no control over the Windows server at all so... (2 Replies)
All,
Have a weird issue where i need to generate a report from GitHub monthly detailing user accounts and the last time they logged in. I'm using a windows box to do this (work issued) and would like to know if anyone has any experience scripting for GitAPI using windows / cygwin / powershell?... (9 Replies)
Hello guys,
I want to parse a JSON file in order to get the data in a table form.
My JSON file is like this:
{
"document":{
"page":
},
{
"column":
}
]
},
{
... (6 Replies)
Hello.
I'm new to bash script and I'm learning the basics by writing some scripts.
Recently a friend of mine asked me if I could try to write a script to him to automate a couple of processes that uses JSON RPCs.
I'll try to explain in few words the workflow just to contextualize the problem.... (48 Replies)
Discussion started by: psysc0rpi0n
48 Replies
LEARN ABOUT LINUX
rbash
RBASH(1) General Commands Manual RBASH(1)NAME
rbash - restricted bash, see bash(1)RESTRICTED SHELL
If bash is started with the name rbash, or the -r option is supplied at invocation, the shell becomes restricted. A restricted shell is
used to set up an environment more controlled than the standard shell. It behaves identically to bash with the exception that the follow-
ing are disallowed or not performed:
o changing directories with cd
o setting or unsetting the values of SHELL, PATH, ENV, or BASH_ENV
o specifying command names containing /
o specifying a file name containing a / as an argument to the . builtin command
o specifying a filename containing a slash as an argument to the -p option to the hash builtin command
o importing function definitions from the shell environment at startup
o parsing the value of SHELLOPTS from the shell environment at startup
o redirecting output using the >, >|, <>, >&, &>, and >> redirection operators
o using the exec builtin command to replace the shell with another command
o adding or deleting builtin commands with the -f and -d options to the enable builtin command
o using the enable builtin command to enable disabled shell builtins
o specifying the -p option to the command builtin command
o turning off restricted mode with set +r or set +o restricted.
These restrictions are enforced after any startup files are read.
When a command that is found to be a shell script is executed, rbash turns off any restrictions in the shell spawned to execute the script.
SEE ALSO bash(1)GNU Bash-4.0 2004 Apr 20 RBASH(1)