Awk
遞歸 grep 僅匹配特定行號
我怎樣才能找到在特定行號上包含特定模式的文件?假設我有一個目錄,其中包含一堆包含 3 行的文本文件,例如:
Title A Category X Description Y
我如何 grep / 過濾每個
Category X
線上文件2
?如何找到具有Title A
as 行的文件1
?我查看了 grep 手冊頁、ripgrep 和替代方法,但不確定是否可以將模式搜尋限制為特定的行號。
你可以
awk
這樣使用:awk 'FNR == 2 && /Category X/ {print FILENAME}' *
當在第 2 行中找到模式時,您可以使用
find
withawk
來退出處理文件的其餘部分,或者如果在第 2 行中沒有找到模式,甚至也可以退出。find -type f -name 'xyz*.txt' -exec \ awk 'NR==2{ if(/pattern/) print FILENANE; exit }' {} \;