Sed正则表达式问题

时间:2016-06-30 13:03:52

标签: php sed

这是我的PHP代码,用于替换文件中的所有电子邮件:

$pattern = "/[[A-Z0-9._%+-]+[ ]?[\(]?(@|at)[\)]?[ ]?[A-Z0-9.-]+[ ]?[\(]?(\.|dot)[)]?[ ]?[A-Z]{2,4}/i";
$string = preg_replace($pattern, "cs@test.nl", $file );

这是工作。我必须提到文件很大。它是从db导出的。我需要这个正则表达式在sed命令中使用它:

sed -r -i 's/[[A-Z0-9._%+-]+[ ]?[\(]?(@|at)[\)]?[ ]?[A-Z0-9.-]+[ ]?[\(]?(\.|dot)[)]?[ ]?[A-Z]{2,4}/i/cs@test.nl/g' 

显然这不起作用。有人可以更正sed命令以使其工作吗? thx

1 个答案:

答案 0 :(得分:0)

您只需在替换后将i修饰符移动到正确的位置。

sed -r -i 's/[[A-Z0-9._%+-]+[ ]?[\(]?(@|at)[\)]?[ ]?[A-Z0-9.-]+[ ]?[\(]?(\.|dot)[)]?[ ]?[A-Z]{2,4}/cs@test.nl/ig'