【发布时间】:2012-09-22 19:15:03
【问题描述】:
我有一个测试文件:
1
2
3
4
5
6
7
8
此命令打印文件的最后 4 行:
$ awk 'BEGIN{"wc -l < file" | getline b}{if(NR>b-4) print}' file
5
6
7
8
userpc@userpc-desktop
现在我也想做同样的事情,但是命令系统():
$ awk '{if( NR > (system("wc -l < file")-4) ) print}' file
8
1
8
2
8
3
8
4
8
5
8
6
8
7
8
8
userpc@userpc-desktop:
如何改进最后一个命令系统()?我还想打印文件的最后 4 行。 感谢您的帮助。
【问题讨论】:
-
你为文件的每一行分叉一个
wc???像您这样的人是 4GHz、具有 64GB RAM 的 Octocore CPU 的原因:-) -
哦,它不起作用,因为 system() 返回退出状态(在这种情况下为 0 -> 始终为真),而不是 wc 的输出。如您所见,为每一行打印标准输出(“8”)。
-
谢谢你的澄清,但我仍然不知道如何改进命令系统()。
标签: awk