我想使用AWK打印文件的每个第N行.我尝试修改一般格式: -
awk '0 == NR % 4' results.txt
至:-
awk '0 == NR % $ct' results.txt
Run Code Online (Sandbox Code Playgroud)
其中'ct'是应跳过的行数.它不起作用.有人可以帮帮我吗?提前致谢.
fed*_*qui 10
您可能想要使用:
awk -v patt="$ct" 'NR % patt' results.txt
Run Code Online (Sandbox Code Playgroud)
给定如下文件:
$ cat -n a
1 hello1
2 hello2
3 hello3
4 hello4
5 hello5
...
37 hello37
38 hello38
39 hello39
40 hello40
Run Code Online (Sandbox Code Playgroud)
这些是等价的:
$ 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
Run Code Online (Sandbox Code Playgroud)
甚至
$ awk -v patt="$ct" '!(NR % patt)' a
Run Code Online (Sandbox Code Playgroud)
注意,语法NR % n == 0
意味着:行数是多个n
.如果我们说!(NR % patt)
,那么无论什么时候NR % patt
都是假的,也就是NR
多数patt
.
当您评论您使用Solaris时,而不是默认awk
使用以下内容:
/usr/xpg4/bin/awk
Run Code Online (Sandbox Code Playgroud)