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

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

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

我试过这个:

sed -i 's/example\.com//ig' file.txt 

但它只会删除字符串example.com,我怎样才能删除整行?

答案1

使用 GNU sed:

sed '/example\.com/d;/test\.com/d' -i file.txt

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

man sed

d      Delete pattern space.  Start next cycle.

答案2

POSIXly,你可以使用grep

grep -Eiv '(example|test)\.com' <in >out

答案3

您的正则表达式仅匹配example.com并仅用空字符串sed替换s 。example.com您的正则表达式应匹配包含 example.com 或 test.com 的任何行

sed -i 's@.*\(test\|example\)\.com.*@@i' file.txt

相关内容