我想使用 AWK 打印文件的每 N 行。我尝试修改一般格式:-
awk '0 == NR % 4' results.txt
到:-
awk '0 == NR % $ct' results.txt
其中 'ct' 是应该跳过的行数。它不工作。谁能帮帮我?提前致谢。
我想使用 AWK 打印文件的每 N 行。我尝试修改一般格式:-
awk '0 == NR % 4' results.txt
到:-
awk '0 == NR % $ct' results.txt
其中 'ct' 是应该跳过的行数。它不工作。谁能帮帮我?提前致谢。
您可能想使用:
awk -v patt="$ct" 'NR % patt' results.txt
给定如下文件:
$ cat -n a
1 hello1
2 hello2
3 hello3
4 hello4
5 hello5
...
37 hello37
38 hello38
39 hello39
40 hello40
这些是等价的:
$ 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
甚至
$ awk -v patt="$ct" '!(NR % patt)' a
请注意,语法NR % n == 0
意味着:行数是n
. 如果我们说!(NR % patt)
,那么只要NR % patt
是假的,即NR
是 的倍数,这就是真的patt
。
当您评论时,您使用的是 Solaris,而不是默认awk
使用以下内容:
/usr/xpg4/bin/awk
这个怎么样:
awk -v n="$ct" '0 == NR % n' results.txt
或者更短一点
awk -v n="$ct" '!(NR % n)' results.txt
这也有效,但它不是一个好习惯。
awk '!(NR%'$ct')' results.txt
这是可以使用的:
awk '!(NR%n)' n="$ct" results.txt