我有一个包含电子邮件列表的文件,每行都有一封电子邮件。我想删除包含字符串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