regex - awk 正则表达式打印每第 N 次出现

标签 regex awk pipe

我想更好地理解 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/

相关文章:

regex - 如何从 bash 中一行的两个分隔符之间提取文本?

regex - 从文件中删除包含非英语 (Ascii) 字符的行

awk - 数字比较在 awk 中产生不正确的结果

java - 如何添加另一个控制台与多线程程序交互

javascript - 接受 JavaScript 中的点和空格

ruby - 使用递归正则表达式(如 perl)在 Ruby 中匹配平衡括号

c - Pipe() 系统调用

c - C中创建进程的函数

javascript - 正则表达式排除某些标签

shell - 选择一个模式可能出现两次的标记模式之间的线