我有一个文件列表,我不在文件列表中的something_cool
后面的N行所以我grep -Hn -A N 'something_cool' *cool_file_discriminator*.cool_file_ending
但是这给了我一个列表:
file1
something_cool
在第k行
第N行
file1
something_cool
第N行
file2
something_cool
在第k行
我只想让比赛的最后一次出现(尾巴,据我所知,不起作用,因为它只需要'fileK'而不是所有早期文件)。
提前致谢
我希望每个文件的最后一行在最终输出中出现一次:
file1
something_cool
第N行
file2
something_cool
答案 0 :(得分:1)
我根据EdMorton评论进行了修改(没有循环超过ls,引用变量)。如果我正确地理解了这个问题,那就是这个工作,但对于我之前的bash命令的错误格式化感到抱歉......
您可以单独对每个文件执行grep
,并tail
结果的最后N + 1行。
集成在for循环中:
for file in <your_forlder> ; do grep -Hn -A N 'something_cool' "$file" | tail -n N+1 ; done ;
作为评论:grep -m 1
将在第一场比赛后停止,然后不会打印最后一场比赛。取决于你需要什么...