Awk

遞歸 grep 僅匹配特定行號

  • February 20, 2022

我怎樣才能找到在特定行號上包含特定模式的文件?假設我有一個目錄,其中包含一堆包含 3 行的文本文件,例如:

Title A
Category X
Description Y

我如何 grep / 過濾每個Category X線上文件2?如何找到具有Title Aas 行的文件1

我查看了 grep 手冊頁、ripgrep 和替代方法,但不確定是否可以將模式搜尋限制為特定的行號。

你可以awk這樣使用:

awk 'FNR == 2 && /Category X/ {print FILENAME}' *

當在第 2 行中找到模式時,您可以使用findwithawk來退出處理文件的其餘部分,或者如果在第 2 行中沒有找到模式,甚至也可以退出。

find -type f -name 'xyz*.txt' -exec \
   awk 'NR==2{ if(/pattern/) print FILENANE; exit }' {} \;

引用自:https://unix.stackexchange.com/questions/690504