我在特定目錄(main_directory)中有 24 個目錄。每24個目錄都有一個文字文件,其名稱為DATA.txt。
我需要使用 grep 命令為每個文字檔案提取以下特定模式;
2* x = 3800689.6402 y = 882077.3636 z = 5028791.2953
2* x =
部分對於所有 DATA.txt 都是不變的。其他數字是可變的。我需要為每個 DATA.txt 提取上面的行並將它們保存到另一個文字檔案中。我可以在此過程中使用哪個腳本?
答案1
若要使用遞歸搜索grep
,請使用該-R
選項。
要搜尋精確的字串,請使用-F
,這樣2*
就不會將其視為正規表示式。
若要僅搜尋特定檔案名,請使用--include
選項。綜合:
grep -FR --include=DATA.txt '2* x' main_directory > another_text_file
答案2
由於您知道目標檔案的名稱,因此您也可以執行下列操作
grep '^2\* x' */DATA.txt > newfile
或者,與awk
:
awk '^/2\* x/' */DATA.txt > newfile
還有珀爾:
perl -ne 'print if /2\* x/' */DATA.txt > newfile
答案3
一般的做法:
grep -r <pattern>
或者
具體做法:
find -name <file patterns which you want to find> | xargs grep <pattern you looking for>