[英]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.