如何使用正则表达式排除具有额外字符的行?

时间:2014-07-01 17:45:52

标签: regex bash

我有一堆电子邮件地址:

abc@google.com

bdc@yahoo.com

\\ ske@google.com

我想删除粗体线,因为除了@之外,字符串中还有额外的字符。和信件。我该怎么做?

4 个答案:

答案 0 :(得分:2)

您可以使用此sed

sed -i.bak -n '/^[[:alnum:]]*@/p' file

答案 1 :(得分:2)

通过awk,

$ awk '/^\w+@\w+/{print}' file
abc@google.com
bdc@yahoo.com

Awk搜索以一个或多个单词字符开头的行,后跟一个@符号,然后再跟一个或多个单词字符。如果发现任何,则打印整行。

此行\\ske@google.com不会以单词字符开头,因此不会打印。

答案 2 :(得分:2)

您也可以使用vim来处理它:

vim -c 'v/^[[:alnum:]]*@/d' -c 'wq' file

答案 3 :(得分:2)

您也可以使用perl模块:

perl -ne 'use Email::Valid; print if Email::Valid->address($_)'