print every nth line into a row using gawk

user1269741 picture user1269741 · Apr 2, 2012 · Viewed 46.2k times · Source

I have a very huge file in which I need to obtain every nth line and print it into a row.

My data:

1      937  4.320194
2      667  4.913314
3      934  1.783326
4      940  -0.299312
5      939  2.309559
6      936  3.229496
7      611  -1.41808
8      608  -1.154019
9      606  2.159683
10     549  0.767828

I want my data to look like this:

1      937  4.320194
3      934  1.783326
5      939  2.309559
7      611  -1.41808
9      606  2.159683

This is of course an example, I want every 10th line for my huge data file. I tried this so far:

 NF == 6 {
     if(NR%10) {print;}
     }

Answer

Steve picture Steve · Apr 2, 2012

To print every second line, starting with the first:

awk 'NR%2==1' file.txt

To print every tenth line, starting with the tenth line:

awk 'NR%10==0' file.txt

To use this in a script, add the following to a file called script.awk:

BEGIN {
    print "Processing file"
}

NR%10==0

END {
    print "Finished processing"
}

Then execute:

awk -f script.awk file.txt