Explain this awk


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Explain this awk
# 1  
Old 05-29-2012
Explain this awk

found this handy one liner in another thread which is closed, it does what i need but im trying to understand it. it basically matches the field that contains the value v and prints its position

Code:
awk -F, '{for(i=1;i<=NF;i++)if($i==v)print i}' v=yourfield inputfile

my understanding is assign loop through the inputfile until the total number of fields has been reached, if the contents of i matches the pattern, print the number i which would be the position number.

would appreciate if someone could express above in a more eloquent manner! thanks
# 2  
Old 05-29-2012
It means for every line: loop through the fields, if a field matches the variable v then print the field position.

This script seems a bit strange to me, since it will just produce field numbers that cannot be related to the line numbers in the input file.

For example:
Code:
$ printf "ape,dog,cat,dog\ndog,snake\n"  | awk -F, '{for(i=1;i<=NF;i++)if($i==v)print i}' v=dog
2
4
1

This User Gave Thanks to Scrutinizer For This Post:
# 3  
Old 05-29-2012
Code:
awk                 # obviously
-F,                 # use comma as the field seperator
'{                  # begin code to run
for(i=1;i<=NF;i++)  # loop over fields in record maintaining position in index "i"
   if($i==v)print i # if the value at the current position is the desired value print the current position
}'                  # end of code to run
v=yourfield         # set the desired value
inputfile           # set the file to iterate over

This User Gave Thanks to Skrynesaver For This Post:
# 4  
Old 05-29-2012
thanks.

yes it is strange in its current form, I had to tweak it as i was only feeding the header.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Please explain the use of quotes in awk command in below example-

Example: `abc.ksh | grep '^GLIS'| awk -F' ' '{print \$1}'`; (3 Replies)
Discussion started by: Tanu
3 Replies

2. Shell Programming and Scripting

Please explain AWK Fibonnaci for loop

Referring to this: #!/bin/awk -f BEGIN{ for(i=0;i<=10;i++) { if (i <=1 ) { x=0; y=1; print i; } else { z=x+y; print z; x=y; y=z; } } (3 Replies)
Discussion started by: p1ne
3 Replies

3. Shell Programming and Scripting

Explain awk

I have 2 files recevied abc def ghi totallist abc 123 jasdhfaj def 345 fjdgkfsfh ghi 567 dfjdhdhfj jkl 678 djkahfdjshdf xyz 984 jdfdhfhdh myOutputFile jkl 678 djkahfdjshdf xyz 984 jdfdhfhdh I used this command for the output : awk 'FNR==NR {f1;next} !($1 in f1)' recevied... (2 Replies)
Discussion started by: nani1984
2 Replies

4. Shell Programming and Scripting

Can Any people explain this awk command

Dear all , Can any people explain this awk command? What is the purpose of if (v++){b=$i;$i=""}? awk -F, '{for (i=1;i<=NF;i++){if (v++){b=$i;$i=""}};print $0} END { print "dups are" ;for ( i in b) print i}' OFS="," input_file This script is used to replace column duplicate value ... (1 Reply)
Discussion started by: eldonlck
1 Replies

5. Shell Programming and Scripting

Please explain what this Awk code is doing

Hi Guys, Please help me, I am new to programming and I don’t understand what some parts of this code are doing. I have comments on the parts I know, please help if my understanding of the code is not correct and also help with parts with questions. awk ' { gsub( ">",... (1 Reply)
Discussion started by: James_Owen
1 Replies

6. UNIX for Dummies Questions & Answers

Please explain this simple AWK example

awk '!_++' Most importantly, I want to know what the underscore does "!_" But ideally, please breakdown the whole thing. It is supposed to remove duplicate lines when found in a file. (1 Reply)
Discussion started by: glev2005
1 Replies

7. Shell Programming and Scripting

Explain this AWK script plz

Hi frnds, one my frnds has given resolution for my problem as below. it working great , but i couldnt understand somethings in the script. Why ++ operator after the function calling. how these each block working. will each run for each input line sequencially or one block for all the lines... (9 Replies)
Discussion started by: Gopal_Engg
9 Replies

8. Shell Programming and Scripting

AWK - HELP pls explain this ?

echo "23.54" | awk ' function round(A) { return int( A + 0.5 ) } { printf("%d\n",round($1)); }'> > > > > > awk: syntax error near line 2 awk: bailing out near line 2 (2 Replies)
Discussion started by: santosh1234
2 Replies

9. Shell Programming and Scripting

plese explain awk '{print \$NF}'

please explain this awk '{print \$NF}' i have a command grep -i adding /logs/eap | grep -iv equation | awk '{print \$NF}' | sort -u | sed 's/\.\$//' >> /temp/t please explain the above awk and sed as well how it works and also what is \$NF (1 Reply)
Discussion started by: mail2sant
1 Replies

10. Shell Programming and Scripting

Explain awk

Hi, I found this command in this forum, but, couldnt understand much from it. could any one help me understand that??? the commands are : awk '{sub(/ ~/,""); printf $0 ($0~/\|$/?ORS:"")}' file1 > file2 awk '{sub(/~ */,x);printf $0(/\|$/?ORS:x)}' awk '{sub(/~ */,x);sub(/\|$/, "|\n")}8'... (4 Replies)
Discussion started by: hitmansilentass
4 Replies
Login or Register to Ask a Question