删除电子邮件模式,使用 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})[\ \:\;\?\!]?
结合两个答案(frhd 和 anubhava)我得到了我不想要的代码。
sed -r "s/([A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})//g" in.txt > out.txt
它从文本文件中删除每封电子邮件
我从中得到了这个纯文本,我想删除所有电子邮件地址(或用 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})[\ \:\;\?\!]?
结合两个答案(frhd 和 anubhava)我得到了我不想要的代码。
sed -r "s/([A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})//g" in.txt > out.txt
它从文本文件中删除每封电子邮件