Shell

如何在文件中查找文本並僅使用 OS X 上的終端 保留相應的匹配行?

  • February 28, 2022

我對終端和命令行很陌生,從我發現 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' {} \;

引用自:https://unix.stackexchange.com/questions/129519