如何获取最后一行(或位置 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
。