删除文件中包含特定文本的行

k96*_*961 9 sed text-processing

我有一个包含电子邮件列表的文件,每一行都有一个电子邮件。我想删除包含字符串example.comtest.com.

我试过这个:

sed -i 's/example\.com//ig' file.txt 
Run Code Online (Sandbox Code Playgroud)

但它只会删除字符串example.com,如何删除整行?

Wal*_*her 21

使用 GNU sed:

sed '/example\.com/d;/test\.com/d' -i file.txt
Run Code Online (Sandbox Code Playgroud)

将删除带有example.com和的行test.com

来自man sed

d      Delete pattern space.  Start next cycle.
Run Code Online (Sandbox Code Playgroud)


cuo*_*glm 5

POSIXly,您可以使用grep

grep -Eiv '(example|test)\.com' <in >out
Run Code Online (Sandbox Code Playgroud)

  • 注意输入和输出不要使用同一个文件,否则它会在`grep`读取之前被截断。 (2认同)