我想更好地理解 awk:我经常搜索正则表达式,很多时候我只对第 N 次出现感兴趣。我总是使用管道完成这项任务说:
awk '/regex/' file | awk 'NR%N==0'
如何使用 awk
(或 perl
)不使用管道 来完成同样的任务?
在某些情况下,使用管道是计算效率最高的解决方案吗?
最佳答案
每三分之一:
awk '/line/ && !(++c%3)' infile
例如:
zsh-4.3.12[t]% cat infile
1line
2line
3line
4line
5line
6line
7line
8line
9line
10line
zsh-4.3.12[t]% awk '/line/ && !(++c%3)' infile
3line
6line
9line
zsh-4.3.12[t]% awk '/line/ && !(++c%2)' infile
2line
4line
6line
8line
10line
关于regex - awk 正则表达式打印每第 N 次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7887390/