awk NR%2{}1 含义

jia*_*ian 3 awk

我试图理解这段代码:

awk 'NR%2{printf "%s ",$0;next;}1' yourFile
Run Code Online (Sandbox Code Playgroud)

现在我尝试定制它。

鉴于此 error.txt 内容:

KEY 4048:1736 string
3
KEY 0:1772 string
1
KEY 4192:1349 string
1
KEY 7329:2407 string
2
KEY 0:1774 string
1
Run Code Online (Sandbox Code Playgroud)

然后:

KEY 4048:1736 string
3
KEY 0:1772 string
1
KEY 4192:1349 string
1
KEY 7329:2407 string
2
KEY 0:1774 string
1
Run Code Online (Sandbox Code Playgroud)

... 将返回:

1KEY 4048:1736 string 3
3KEY 0:1772 string 1
5KEY 4192:1349 string 1
7KEY 7329:2407 string 2
9KEY 0:1774 string 1
Run Code Online (Sandbox Code Playgroud)

我猜NR%2是指偶数行号,但我不确定它1指的是什么。
如果没有1awk 'NR%2{printf NR "%s ", $0; next}' error.txt 将返回一行。

1KEY 4048:1736 string 3KEY 0:1772 string 5KEY 4192:1349 string 7KEY 7329:2407 string 9KEY 0:1774 string 
Run Code Online (Sandbox Code Playgroud)

总的来说,我还是没明白。

到目前为止我已经看过这些页面:

αғs*_*нιη 10

%数/余数算术运算符,用于查找两个或多个数字的模除法。awkNR中的表示当前记录号除以 2,其中它被写为条件语句,对于偶数记录号结果为 0,因此 0 是错误结果,因此不执行后续操作;

最后1,将执行一个称为“始终为真”条件的习惯用法,该习惯用法将打印前几行末尾的偶数行号(只要结果为NR%20 就运行),其中这些行号是printf不带换行符打印的。请参阅awk 脚本末尾的“1”的含义是什么