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

时间:2015-04-08 14:12:42

标签: regex email sed grep pattern-matching

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

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

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

谢谢

3 个答案:

答案 0 :(得分:2)

替换使用sed而非grep

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

答案 1 :(得分:1)

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

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

它会删除文本文件中的所有电子邮件

答案 2 :(得分:0)

正则表达式版本:

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

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