Sponsored Content
Top Forums Shell Programming and Scripting Need help with sed/awk command Post 302922121 by Corona688 on Wednesday 22nd of October 2014 01:26:20 PM
Old 10-22-2014
This is an effort at doing it 'properly', counting brackets and fields. I had to cheat a lot, by converting it into something more readily understandable, stripping out all whitespace and newlines then adding my own where they look appropriate. This makes it consistent enough to handle in a shell language.

Code:
#!/bin/bash

INPUTFILE="data"

# Strip out all newlines and whitespace, flattening it into something
# we can process line-by-line.
# Then 'xargs' eats quotes.
# Then we feed it into awk, which parses it counting { } ( ),
# and extracts the fields of interest.
sed 's/[)][ \r\n\t]*;/)/g;s/[{}();]/ & /g' "$INPUTFILE" |
        tr -s ' \n' '\n' | xargs -n 1 | awk '
/;/ {   L=0 ; next }

/[{(]/ {
        if(DEP == 1)    PDNAME[++PDN]=STR[1]
        if(S ~ /#surfaces$/) PNAME[++PN]=STR[1]

        S=S"#"STR[1]
        DEP++

        L=0
#       printf(">> %s\n", S);
        next
}

/[})]/ {
        if(S ~ /#fields$/) {
                C=""
                for(N=1; N<=L; N++) C = C " " STR[N]
                FIELDS[++F]=substr(C,2);
        }

        L=0
        sub(/#[^#]*$/, "", S);
        DEP--
#       printf("<< %s\n", S);
        next
}

{       STR[++L]=$0     }

END {
        printf("planename=(");
        for(N=1; N<=PN; N++)    printf(" \"%s\"", PNAME[N]);
        printf(" )\n");

        printf("planedictname=(");
        for(N=1; N<=PDN; N++)   printf(" \"%s\"", PDNAME[N]);
        printf(" )\n");

        printf("fields=(");
        for(N=1; N<=F; N++)     printf(" \"%s\"", FIELDS[N]);
        printf(" )\n");
}' > /tmp/$$

# Read this into the shell to set the arrays
. /tmp/$$
# Remove temp file
rm -f /tmp/$$

echo "planedictname ${planedictname[@]}"
echo "planename ${planename[@]}"
echo "fields ${fields[@]}"

Code:
$ ./trans.sh

planedictname planeDictName planeDictName2
planename planeName1 planeName2
fields p U T p U

$

This User Gave Thanks to Corona688 For This Post:
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

What do you know about the Sed and Awk command??

I just need some information on what they can be use for and whatever else there is. anything you know, state here (2 Replies)
Discussion started by: TRUEST
2 Replies

2. Shell Programming and Scripting

Help with Sed or AWK command!!!

Hi, I need help with Sed or AWk command.i want to remove all the numerals from the file name.These files are stored within a text file and after the numerals are removed,i need to redirect its output to another new .txt file. Input: aa_1002985_952.xml aa_bb_032207.txt... (5 Replies)
Discussion started by: kumarsaravana_s
5 Replies

3. Shell Programming and Scripting

sed for this awk command

Hi what would be the sed equivalent of this awk command: awk '/$getsn/{getline;next}{print}' file It deletes the variable found and the next line after it in a file. Thanks (3 Replies)
Discussion started by: wisher115
3 Replies

4. Shell Programming and Scripting

awk/sed Command : Parse parameter file / send the lines to the ksh export command

Sorry for the duplicate thread this one is similar to the one in https://www.unix.com/shell-programming-scripting/88132-awk-sed-script-read-values-parameter-files.html#post302255121 Since there were no responses on the parent thread since it got resolved partially i thought to open the new... (4 Replies)
Discussion started by: rajan_san
4 Replies

5. Shell Programming and Scripting

Interpret sed and awk in the below command.

Could you interpret the following sed and awk command for me? command: cat tempfile2 |sed "s/\(BUILD-3-.*-\.-\)\(.*\..*\..*\)/\2/" | awk '{printf "%-8.8s %-23.23s %-30.30s %-50.50s\n", $1,$2,$3,substr($0,index($0,$4))}' > outfile2 2>/dev/null input:data in tempfile2... (5 Replies)
Discussion started by: vj8436
5 Replies

6. Shell Programming and Scripting

SED/AWK command

Hi All, I have a file which has following lines : - Deploy XXX application <server-address> - info <server-address> - Deploy XXX application <server-address> - info <server-address> - Deploy XXX application <server-address> - info <server-address> I want output like this way in... (8 Replies)
Discussion started by: bhaskar_m
8 Replies

7. Shell Programming and Scripting

Command line - awk, sed

My input file gfile values is CTRY=GM&PROJTYPE=SP&PROJECTTYPE=Small+Project If i am giving PROJECTTYPE then it must give Small Project awk -F"&" '{for (i=1; i<=NF; i++) if ($i ~ "^"PAT) {sub ("^"PAT"=", "", $i); sed 's/'+'/""/' $i ; print $i }}' PAT=$1 ... (6 Replies)
Discussion started by: nag_sathi
6 Replies

8. Shell Programming and Scripting

sed and awk giving error ./sample.sh: line 13: sed: command not found

Hi, I am running a script sample.sh in bash environment .In the script i am using sed and awk commands which when executed individually from terminal they are getting executed normally but when i give these sed and awk commands in the script it is giving the below errors :- ./sample.sh: line... (12 Replies)
Discussion started by: satishmallidi
12 Replies

9. Shell Programming and Scripting

Need help with sed/awk command

Dear ALL, I am still struggling with some basic sed operations. I want to change path in a file as shown below: case_OM = PV4Reader( FileName='/home/linuxUser/demoCases/s1/case/case.OM' ) to case_OM = PV4Reader( FileName='/home/linuxUser/demoCases/s2/case/case.OM' ) In this file there... (5 Replies)
Discussion started by: linuxUser_
5 Replies

10. Shell Programming and Scripting

Help with sed/awk command

Hi All, This is my first thread. Hopefully you guys can help me out. I have a csv file, that provides access to managers to a tool. The file is loaded onto our server containing all the assc id's with a trailing comma. For ex: 182950, 123456, However, we receive a file that... (8 Replies)
Discussion started by: Prateek Dubey
8 Replies
All times are GMT -4. The time now is 06:53 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy