如何清除目录中所有CSV的电子邮件?

时间:2016-04-03 00:48:19

标签: regex macos sed grep

我有这个正则表达式可以正常工作,以便在Mac OS X上使用grep在目录中的CSV中识别电子邮件:

grep --no-filename -E -o "\b[a-zA-Z0-9.-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9.-]+\b" *

我已尝试使用sed进行此操作,以便我可以使用foo@bar.baz替换电子邮件:

sed -E -i '' -- 's/\b[a-zA-Z0-9.-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9.-]+\b/foo@bar.baz/g' *

然而,我似乎无法让它发挥作用。不可否认,sed和正则表达式不是我的优点。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

sed中的OSX被破坏了。使用GNU sed替换为Homebrewsudo brew install gnu-sed 将替换为OSX捆绑的版本。使用此命令进行安装

substitution

并将其用于sed -E -i 's/\b[a-zA-Z0-9.-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9.-]+\b/foo@bar.baz/g' *

&&

Reference

答案 1 :(得分:0)

您似乎认为grepsed支持相同的正则表达方言,但这不一定,甚至通常不是这种情况。

如果你想要一个便携式解决方案,你可以很容易地使用Perl,但是它支持另一种正则表达方式......

perl -i -p -e 's/\b[a-zA-Z0-9.-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9.-]+\b/foo@bar.baz/g' *

有关正则表达式方言的概述,请参阅https://stackoverflow.com/a/11857890/874188

你的正则表达式很糟糕,但我明白这有点不合时宜。