我试图理解这段代码:
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指的是什么。
如果没有1, awk '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”的含义是什么