将最后一个grep放在文件列表中

时间:2018-04-11 11:30:50

标签: bash grep

我有一个文件列表,我不在文件列表中的something_cool后面的N行所以我grep -Hn -A N 'something_cool' *cool_file_discriminator*.cool_file_ending但是这给了我一个列表:

  • file1 something_cool在第k行
  • LINE1
  • line2

  • 第N行

  • 第li行
  • file1 something_cool

  • LINE1
  • line2

  • 第N行

  • file2 something_cool在第k行

  • LINE1
  • line2

  • line N

我只想让比赛的最后一次出现(尾巴,据我所知,不起作用,因为它只需要'fileK'而不是所有早期文件)。

提前致谢

编辑(预期输出)

我希望每个文件的最后一行在最终输出中出现一次:

    第li行
  • file1 something_cool
  • LINE1
  • line2

  • 第N行

  • 第li行
  • file2 something_cool

  • LINE1
  • line2

  • line N

1 个答案:

答案 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将在第一场比赛后停止,然后不会打印最后一场比赛。取决于你需要什么...