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.