Grep
遞歸搜尋兩個字元串之間的文本
我正在嘗試遞歸搜尋許多不同文件中兩個字元串之間的文本。這兩個(下)在一個包含 hits.txt 文件的文件夾中搜尋時都有效,但我想從更高級別的目錄中執行此操作,因此我沒有在每個文件夾中分別執行其中任何一個。
awk '/aaa/,/bbb/' hits.txt >> As.doc sed -n '/aaa/,/bbb/p' hits.txt > As.doc
我已經嘗試了各種 grep 命令來進行如下所示的遞歸搜尋,但它只是創建了一個空文件。
grep -r --include='*.txt' '/aaa/,/bbb/' > As.doc
我不確定什麼最有效,或者我是否應該將 find 與上述之一一起使用。
該
grep
實用程序沒有一系列行的概念,就像兩者sed
和一樣awk
,所以表達式/aaa/,/bbb/
不會像你期望的那樣(它只會匹配文字文本,包括斜杠和逗號,這大概就是你得到一個空的原因結果)。假設您顯示的
sed
和awk
命令有效,並且您唯一需要幫助的是將這些應用於名稱以 結尾的文件.txt
,從目前目錄遞歸。find . -type f -name '*.txt' -exec awk '/aaa/,/bbb/' {} + >As.doc
或者
find . -type f -name '*.txt' -exec sed -n '/aaa/,/bbb/p' {} + >As.doc
這些命令將查找目前目錄中或目前目錄下的所有正常文件,並使用這些文件批量呼叫
awk
or實用程序。sed
來自find
(將是來自awk
or的輸出sed
)的輸出被重定向到As.doc
在目前目錄中呼叫的文件(如果該文件不存在,則該文件將被截斷(清空)或創建)。