Need help with sed/awk command


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Need help with sed/awk command
# 36  
Old 10-23-2014
code:
Code:
awk     '/^ *functions */       {F=1; next}
         F                      {CNT=CNT+gsub(/{/,"")-gsub(/}/,""); if (CNT==1 && !/^ *$/) print "dictname[" ++dc "]=" $0}
         /fields/               {for (i=3; i<NF; i++) print "fieldname[" ++fc "]="$i}
         /^ *surfaces */        {S=1; next}
         S                      {gsub(/[^0-9A-Za-z]*/, ""); if (!/^ *$/) {print "planename[" ++pc "]=" $0; S=0}}
        ' file > /tmp/$$

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

echo "0"${dictname[0]} ${planename[0]} ${fieldname[0]} 
echo "1"${dictname[1]} ${planename[1]} ${fieldname[1]} 
echo "2"${dictname[2]} ${planename[2]} ${fieldname[2]} 
echo "3"${dictname[3]} ${planename[3]} ${fieldname[3]} 
echo "4"${dictname[4]} ${planename[4]} ${fieldname[4]} 
echo "5"${dictname[5]} ${planename[5]} ${fieldname[5]} 
echo "6"${dictname[6]} ${planename[6]} ${fieldname[6]} 
echo "7"${dictname[7]} ${planename[7]} ${fieldname[7]} 
echo "8"${dictname[8]} ${planename[8]} ${fieldname[8]} 
echo "9"${dictname[9]} ${planename[9]} ${fieldname[9]} 
echo "10"${dictname[10]} ${planename[10]} ${fieldname[10]} 
echo "11"${dictname[11]} ${planename[11]} ${fieldname[11]} 
echo "12"${dictname[12]} ${planename[12]} ${fieldname[12]} 
echo "13"${dictname[13]} ${planename[13]} ${fieldname[13]}


result:
Code:
/tmp/23728: line 1: planeDictName1: command not found
/tmp/23728: line 6: planeDictName2: command not found
0
1 planeName1 p
2 planeName2 U
3 T
4 p
5 U
6 
7 
8 
9 
10
11
12
13

I am doing something wrong with construction i guess
# 37  
Old 10-23-2014
Please don't source /tmp/$$ but post its contents!

EDIT: Did you remove the spaces from $0 before printing the dictname assignment?

Last edited by RudiC; 10-23-2014 at 10:42 AM..
# 38  
Old 10-23-2014
Code:
Code:
. <(awk     '/^ *functions */       {Func=1; next}
         Func                   {CNT=CNT+gsub(/{/,"")-gsub(/}/,""); if (CNT==1 && !/^ *$/) print "dictname[" ++dc "]="$0}
         /fields/               {for (i=3; i<NF; i++) print "fieldname[" ++fc "]="$i}
         /^ *surfaces */        {S=1; next}
         S                      {gsub(/[^0-9A-Za-z]*/, ""); if (!/^ *$/) {print "planename[" ++pc "]="$0; S=0}}
        ' file)

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

echo "0"${dictname[0]} ${planename[0]} ${fieldname[0]} 
echo "1"${dictname[1]} ${planename[1]} ${fieldname[1]} 
echo "2"${dictname[2]} ${planename[2]} ${fieldname[2]} 
echo "3"${dictname[3]} ${planename[3]} ${fieldname[3]} 
echo "4"${dictname[4]} ${planename[4]} ${fieldname[4]} 
echo "5"${dictname[5]} ${planename[5]} ${fieldname[5]} 
echo "6"${dictname[6]} ${planename[6]} ${fieldname[6]} 
echo "7"${dictname[7]} ${planename[7]} ${fieldname[7]} 
echo "8"${dictname[8]} ${planename[8]} ${fieldname[8]} 
echo "9"${dictname[9]} ${planename[9]} ${fieldname[9]} 
echo "10"${dictname[10]} ${planename[10]} ${fieldname[10]} 
echo "11"${dictname[11]} ${planename[11]} ${fieldname[11]} 
echo "12"${dictname[12]} ${planename[12]} ${fieldname[12]} 
echo "13"${dictname[13]} ${planename[13]} ${fieldname[13]}

Results:

Code:
/dev/fd/63: line 1: planeDictName1: command not found
/dev/fd/63: line 6: planeDictName2: command not found
0
1 planeName1 p
2 planeName2 U
3 T
4 p
5 U
6 p
7 U
8 p
9 U
10
11
12
13

Still the same situation. Yes I have removed space before $0 after print statement.

Thanks & Regards,
linuxUser_
# 39  
Old 10-23-2014
Quote:
Originally Posted by linuxUser_
How can I separate them out?
They are separated out. I was careful of that.

If you print array index 0, you'll get p U T
If you print array index 1, you'll get p U

The echo statement mashes them together but they didn't start that way.

Plese give my code a proper try. It does everything you asked for exactly the way you asked for it, putting the values from your input data into several different arrays.

Last edited by Corona688; 10-23-2014 at 01:39 PM..
# 40  
Old 10-23-2014
Well, How can I access to p U T separately?
# 41  
Old 10-23-2014
You know this already.
You get the first index of fields by doing ${fields[0]}
You get the second index of fields by doing ${fields[1]}

I have given you the exact variables you asked for, in the exact names you asked for, in the exact manner you asked for (shell arrays). If it's not working, tell me how.
# 42  
Old 10-23-2014
Quote:
Originally Posted by Corona688
You know this already.
You get the first index of fields by doing ${fields[0]}
You get the second index of fields by doing ${fields[1]}

I have given you the exact variables you asked for, in the exact names you asked for, in the exact manner you asked for (shell arrays). If it's not working, tell me how.

Ok. I actually wanted something like this.
as each dictName will have seperate planeName and field names,
I taught if we can create a class like dictName and variables planeName and fields, it will be straight forward to use.

I guess it may not be possible, but tel me if it is possible.

example:
Code:
dictName[0] = planeDictName1
dictName[0].planeName = planeName1
dictName[0].fields[0] = p
dictName[0].fields[0] = U
dictName[0].fields[0] = T
dictName[0].fieldsSize = 3

similarly for dictName[1]

Thanks and Regards,
linuxUser_
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. 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

2. 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

3. 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

4. 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

5. 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

6. 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

7. 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

8. 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

9. 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

10. 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
Login or Register to Ask a Question