Loop through awk results


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Loop through awk results
# 8  
Old 12-12-2011
Quote:
Originally Posted by hermes14
Sample input file:
Code:
[stanza1]
id1: value1
id2: value2
id3: value3

[stanza2]
id1: value1
id2: value2
id3: value3

[stanza12]
id1: value1
id2: value2
id3: value3

Searching for 'stanza1' will return
Code:
[stanza1]
id1: value1
id2: value2
id3: value3
[stanza12]
id1: value1
id2: value2
id3: value3

as a single result.
I would like to access to the content of each stanza, so that I could assign
Code:
[stanza1]
id1: value1
id2: value2
id3: value3

to, e.g., variable i, and
Code:
[stanza12]
id1: value1
id2: value2
id3: value3

to variable j.

---------- Post updated at 02:41 PM ---------- Previous update was at 02:33 PM ----------


Thanks for the reply ygemici, but this will cycle throug each line of the result, that's not what I need.
Code:
# cat infile
[stanza1]
id1: value1
id2: value2
id3: value3

[stanza2]
id4: value1
id5: value2
id6: value3

[stanza12]
id7: value1
id8: value2
id9: value3

Code:
# ./justdoit infile
Please enter variable name with counts "3" [eg -> i j k l m n..] i j k
'i' value= "[stanza1]
id1: value1
id2: value2
id3: value3"

'j' value= "[stanza2]
id4: value1
id5: value2
id6: value3"

'k' value= "[stanza12]
id7: value1
id8: value2
id9: value3"

Code:
#!/bin/bash
c=$(awk 'BEGIN{j=1}/[stanza.*]/{a[x++]=$0;while(getline){if(!/^$/)a[x++]=$0;
else{system(">"FILENAME "_"j);for(i=0;i<x;i++){print a[i]>>(FILENAME "_"j)};x=0;j++}}}
END{system(">"FILENAME "_"j);for(i=0;i<x;i++)print a[i]>>(FILENAME "_"j);print j}' $1)
read -p "Please enter variable name with counts \"$c\" [eg -> i j k l m n..] " val;rval=($val)
for((k=1;k<=$c;k++));do val[k]=$(echo "$(<$1_$k)")
echo -e  "'${rval[i++]}' value= \"${val[k]}\"\n";done

regards
ygemici
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Df -h results in a loop

Hello everyone, I am doing a check of the disk space using df -h, I want to combine the result in break line; but the result after while/done is empty: # df -h Filesystem Size Used Avail Use% Mounted on rootfs 20G 14G 4.6G 75% / /dev/root 20G 14G 4.6G 75% /... (15 Replies)
Discussion started by: Abu Rayane
15 Replies

2. Shell Programming and Scripting

Substitute from awk results

Hi, The following awk command : asmcmd lsdg | awk '{print $13;}' | grep -i ${SID} return the following output . An Empty line + two lines contain "/" at the end of the line INDEVDATA/ INDEVFRA/ I need to remove the "/" as well as the empty line. Please advise Thanks (3 Replies)
Discussion started by: Yoav
3 Replies

3. Shell Programming and Scripting

Narrowing sed Results in While Loop

find $SRC -type f -name *.emlx | while read FILE do if : then sed -n '/From/p' $FILE fi done > $DEST-output.txt The loop above spits out a .txt file with several lines that look like this: From: John Smith <jsmith@company.com> How can I narrow that sed result to spit out the email... (5 Replies)
Discussion started by: sudo
5 Replies

4. Shell Programming and Scripting

Concatenate Loop Results

Hi, I have the following situation: Param1Values = AAAA,BBBB Param1=$(echo $Param1Values| tr "," "\n") for x in $Param1 do db2 select X from Y where Z IN ('$x') done Obviously the above will perform the select 'x' amount of times. Is there a way in which i can... (13 Replies)
Discussion started by: RichZR
13 Replies

5. Shell Programming and Scripting

Not able to store the results of perl recursive function when applied under for loop

Hi Perl Gurus , need URGENT HELP PLEASE !!!!! I have one recursive Perl function which takes path of any directory as argument and returns array containing all the sub folders inside it recursively. Now the problem is that it works well if i use it with one time but the problem is that when... (0 Replies)
Discussion started by: anthriksh2000
0 Replies

6. Shell Programming and Scripting

doing a for loop adding up the results

Hi there If I run a 'swap -l' on my solaris box, i get swapfile dev swaplo blocks free /dev/dsk/c1t0d0s1 54,65 8 67119560 65655144 /dev/dsk/c1t0d0s2 54,65 8 33119522 32655122 I wanted to run a for loop adding up the totals of each column 4 , excluding the... (2 Replies)
Discussion started by: hcclnoodles
2 Replies

7. Shell Programming and Scripting

2 CMD results on the same line while rexing in a loop

Folks, I have a 3 problems. In a sh script, I call a server name from a list and rex to a distant machine to get the boot date. for i in `cat list` do (echo "$i|"; /bin/rexsh $i -l bozo -t10 who -b | cut -d" " -f14-16) >>getBootTimes.out sleep 1 done The results are on 2 lines instead... (8 Replies)
Discussion started by: linux_lou
8 Replies

8. Shell Programming and Scripting

need a little help with results from awk

Hi there all, I am using a line to get some replys from my PS I do ps -ef |awk '{printf $9}' But my result is 1 big line. No spaces between the lines or someting for example:... (2 Replies)
Discussion started by: draco
2 Replies

9. Shell Programming and Scripting

Perl - Iterating a hash through a foreach loop - unexpected results

i've reworked some code from an earlier post, and it isn't working as expected i've simplified it to try and find the problem. i spent hours trying to figure out what is wrong, eventually thinking there was a bug in perl or a problem with my computer. but, i've tried it on 3 machines with the... (5 Replies)
Discussion started by: quantumechanix
5 Replies
Login or Register to Ask a Question