我正在使用grep在一组文件中提取行:
grep somestring *.log
是否可以限制每个文件的最大匹配次数?理想情况下,我只想从每个*.log文件中打印出n行。
我正在使用grep在一组文件中提取行:
grep somestring *.log
是否可以限制每个文件的最大匹配次数?理想情况下,我只想从每个*.log文件中打印出n行。
限制每个文件为11行:
grep -m11 somestring *.log
awk
模拟它的替代方法:awk 'f==10{f=0; nextfile; exit} /regex/{++f; print FILENAME":"$0}' *.log
f==10 :
f
是一个标志位,我们设置并检查其值是否等于 10。您可以根据要匹配的行数进行配置。
nextfile :
将处理转移到下一个文件。
exit :
退出 awk
。
/regex/ :
搜索 regex
或 pattern
。
{++f;print FILENAME":"$0} :
我们增加标志位并打印文件名和行号。
-m
是在哪个版本中出现的? - Joseph QuinseyGNU grep
的-m
选项有一段时间了(在Red Hat 4中已经存在)。干杯! - oHo[[ $(grep -m11 somestring * .log | wc -l)-eq 11]]
- MatrixManAtYrService