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
RECSEL(1)							   User Commands							 RECSEL(1)

NAME
recsel - print records from a recfile SYNOPSIS
recsel [OPTION]... [-t TYPE] [-n INDEXES | -e RECORD_EXPR | -q EXPR | -m NUM] [-c | (-p|-P) FIELD_EXPR] [FILE]... DESCRIPTION
Select and print rec data. -d, --include-descriptors print record descriptors along with the matched records. -C, --collapse do not section the result in records with newlines. -S, --sort=FIELD sort the output by the specified field. -U, --uniq remove duplicated fields in the output records. -s, --password=STR decrypt confidential fields with the given password. --help print a help message and exit. --version show version and exit. Record selection options: -i, --case-insensitive make strings case-insensitive in selection expressions. -t, --type=TYPE operate on records of the specified type only. -e, --expression=EXPR selection expression. -q, --quick=STR select records with fields containing a string. -n, --number=NUM,... select specific records by position, with ranges. -R, --random=NUM select a given number of random records. Output options: -p, --print=FIELDS comma-separated list of fields to print for each matching record. -P, --print-values=FIELDS as -p, but print only the values of the selected fields. -R, --print-row=FIELDS as -P, but separate the values with spaces instead of newlines. -c, --count print a count of the matching records instead of the records themselves. Special options: --print-sexps print the data in sexps instead of rec format. AUTHOR
Written by Jose E. Marchesi. REPORTING BUGS
Report bugs to: bug-recutils@gnu.org GNU recutils home page: <http://www.gnu.org/software/recutils/> General help using GNU software: <http://www.gnu.org/gethelp/> COPYRIGHT
Copyright (C) 2010, 2011, 2012 Jose E. Marchesi. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. SEE ALSO
The full documentation for recsel is maintained as a Texinfo manual. If the info and recsel programs are properly installed at your site, the command info recsel should give you access to the complete manual. recsel 1.4.93 January 2012 RECSEL(1)
All times are GMT -4. The time now is 12:56 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy