AWK to print every nth line from a file

awk

Solution

You may want to use:

awk -v patt="$ct" 'NR % patt' results.txt

Explanation

Given a file like the following:

$ cat -n a
     1  hello1
     2  hello2
     3  hello3
     4  hello4
     5  hello5
     ...
    37  hello37
    38  hello38
    39  hello39
    40  hello40

These are equivalent:

$ awk 'NR % 7 == 0' a
hello7
hello14
hello21
hello28
hello35
$ ct=7
$ awk -v patt="$ct" 'NR % patt == 0' a
hello7
hello14
hello21
hello28
hello35

Or even

$ awk -v patt="$ct" '!(NR % patt)' a

Note that the syntax `NR % n == 0` means: number of line is multiple to `n`. If we say `!(NR % patt)`, then this is true whenever `NR % patt` is false, ie, `NR` is multiple of `patt`.

Update

As you comment you are using Solaris, instead of default `awk` use the following:

/usr/xpg4/bin/awk

Problem

i want to print every Nth line of a file using AWK. i tried modifying the general format :- `awk '0 == NR % 4' results.txt` to:- ``` awk '0 == NR % $ct' results.txt ``` where 'ct' is the number of lines that should be skipped. its not working . can anyone please help me out? Thanks in advance.

Original source