簡體   English   中英

如何 grep 目錄並將找到的完整行寫入文件

[英]how can I grep a directory and write the full line found to a file

我在我的目錄中有一個字符串,它看起來像這樣:

Found an error with id: XXXX

我希望能夠獲取所有這些行並將它們寫入一個新的單獨文件。 目前我有這個:

grep -rl "Found an error with id:" . >> errorOutput.txt

但這只會打印包含該字符串的文件。 有什么辦法可以得到帶有 id 的完整行嗎?

您的-l標志是這里的罪魁禍首。 由於-r遞歸搜索,它會抑制匹配行中的內容,並僅打印出包含匹配項的文件。 即使沒有-l標志,您也會得到filename:pattern結果。

因此,要將模式存儲在文件中,請使用額外的awk到管道,如下所示。

grep -r "Found an error with id:" . | awk -F: '{ print $2 }' > results.log

或者只是使用grep跳過使用-h標志打印文件名(FreeBSD 和 GNU 變體都支持這一點)

grep -rh "Found an error with id:" . > results.log

順便說一句, awk本身很強大,它可以在文件系統上自行進行模式搜索。 所以你可以這樣做

awk '/Found an error with id:/' * > results.log 2>/dev/null

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM