在Linux(Debian)上可以正常工作:

sed -e 's,^[ \t]*psd\(.*\)\;,,'

在Mac上,我相信我必须使用-E标志,而不是-e:
sed -E 's,^[ \t]*psd\(.*\)\;,,'

但正则表达式不匹配,因此不会删除我想要的行。

有关如何解决此问题的任何提示?

输入样例:
apa
bepa
    psd(cepa);
depa psd(epa);
  psd(fepa gepa hepa);

对于该输入,预期输出为:
apa
bepa
depa psd(epa);

最佳答案

-E标志意味着使用扩展的正则表达式。您应该只在Linux上使用-e。 Mac OS X中的sed基于BSD sed,因此没有GNU扩展。

复制样本输入后:

[~ 507] pbpaste | sed -e 's,^[[:space:]]*psd\(.*\);,,'
apa
bepa

depa psd(epa);

关于linux - Mac上的Sed正则表达式问题,在Linux上工作正常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6761361/

10-11 09:00