Text-Processing
搜尋包含文件名的字元串
我在一個目錄中有大量文件。這些文件包含任意文本。
我想在該特定文件文本中搜尋文件名。為了澄清,我有
file1.py.txt
(是的,兩個點.py.txt
)並且file2.py.txt
都包含文本。我想搜尋里面的字元串的存在和里面@code prefix.file1.py
的file1.py.txt
字元串@code prefix.file2.py``file2.py.txt
如何進行自定義
grep
,使其遍歷目錄中的每個文件,使用該特定文件名在每個文件中搜尋字元串?編輯:
我要查找的輸出寫在一個單獨的文件中,
result.txt
其中包含:文件名(如果找到匹配項)、行文本(找到匹配項的位置)
使用 GNU
awk
:gawk ' BEGINFILE{search = "@code prefix." substr(FILENAME, 3, length(FILENAME) - 6)} index($0, search)' ./*.py.txt
將報告匹配的行。
要列印文件名和匹配行,請更改
index($0, search)
為index($0, search) {print FILENAME": "$0}
或僅列印文件名:
index($0, search) {print FILENAME; nextfile}
替換
FILENAME
為substr(FILENAME, 3)
跳過輸出./
前綴。文件列表按詞法排序。名稱以開頭的那些
.
將被忽略(某些 shell 可以dotglob
選擇將它們添加回來;使用zsh
,您也可以使用(D)
glob 限定符)。