一行代码来获取最后一行(或位置 X 上的行)与特定模式匹配的文件名列表?

一行代码来获取最后一行(或位置 X 上的行)与特定模式匹配的文件名列表?

如何获取最后一行(或位置 X 上的行)与特定模式匹配的文件名列表?

我们正在寻找一句话。

答案1

awk '/pattern/ {last_matching_line = FNR} (FNR != NR && FNR==1) {if (last_FNR == last_matching_line) {print last_filename}} {last_FNR = FNR; last_filename = FILENAME} END {if (FNR == last_matching_line) {print FILENAME}}' file1 file2...
  • last_matching_line首先通过保存FNR
  • FNR==1然后通过检查 awk 是否正在处理另一个文件( )或正在处理最后一个文件( )来检查它是否是最后一行END
  • 在这两种情况下,打印FILENAME

对于位置 X 上的线的问题,它比较简单,因为只有一种情况需要检查:FNR == X

相关内容