今天我在网上搜索一个命令,打印模式后的下两行,我遇到了一个我无法理解的awk命令。
$ /usr/xpg4/bin/awk '_&&_--;/PATTERN/{_=2}' input
有人能解释一下吗?
发布于 2013-08-24 02:25:55
有关此处复制的答案,请参阅https://stackoverflow.com/a/17914105/1745001。
发布于 2013-08-24 00:56:46
_
在这里用作变量名(有效但明显令人困惑)。如果您将其重写为:
awk 'x && x--; /PATTERN/ { x=2 }' input
这样就更容易解析了。只要匹配到/PATTERN/
,变量就会被设置为2
(并且不会输出该行)--这就是后半部分。第一部分在x
不为零时触发,递减x
并打印当前行(默认操作,因为该子句没有指定操作)。
最终结果是在任何模式匹配后立即打印这两行,只要这两行都不与该模式匹配。
https://stackoverflow.com/questions/18407890
复制相似问题