Shell
如何在文件中查找文本並僅使用 OS X 上的終端 保留相應的匹配行?
我對終端和命令行很陌生,從我發現 grep 似乎是搜尋特定文本字元串的文件的正確工具。
我有一個包含許多巨大文本文件的文件夾,我只想保留每個文件中包含特定字元串的那些行(例如“/foobar”。,例如:
文件內容:
lorem ipsum trololo /foobar abc dolor sit /foobar def
之後應為:
trololo /foobar abc /foobar def
我猜命令看起來像這樣
grep -wE "(/foobar)"
但我不知道如何告訴命令只保留這些行並對您在目前文件夾中找到的每個文件執行此操作。
你會這樣做
find
還是 grep 有自己的功能?就像是:find ./* -exec do grep stuff here
grep
只會在文件中找到與模式匹配的行,它不會更改文件。您可以使用sed
來查找模式並對文件進行更改:sed '/\B\/foobar\b/!d' filename
將顯示文件中匹配
/foobar
的行。為了就地保存對文件的更改,請使用該-i
選項。sed -i '/\B\/foobar\b/!d' filename
你也可以使用它
find
:find . -type f -exec sed -i'' '/\B\/foobar\b/!d' {} \;