删除电子邮件模式,使用 grep、awk 或 sed 保留其余模式?

deleting email pattern, keeping the rest using grep, awk or sed?

我从中得到了这个纯文本,我想删除所有电子邮件地址(或用 E 替换)。我想将其他所有内容保留在文本文件中。电子邮件地址后可以跟 space、冒号、分号、问号或感叹号。我使用 gnuwin 并尝试了 grep 但没有得到正确的结果

grep -Eiv "\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b" in.txt > out.txt

这将删除包含电子邮件模式的每一行。我只希望电子邮件消失。

谢谢

替换使用 sed 而不是 grep:

sed -r 's/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b//Ig' in.txt > out.txt

正则表达式版本:

([a-zA-Z0-9\._%+-]+@[a-zA-Z0-9\.-]+\.[a-zA-Z]{2,4})[\ \:\;\?\!]?

https://regex101.com/r/qJ2eG7/1

结合两个答案(frhd 和 anubhava)我得到了我不想要的代码。

sed -r "s/([A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})//g" in.txt > out.txt

它从文本文件中删除每封电子邮件