linux - Mac 上的 Sed 正则表达式问题,在 Linux 上工作正常

标签 linux macos sed

这在 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 标志表示使用扩展的正则表达式。您应该只使用 -e,就像在 Linux 上一样。 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/

相关文章:

linux - 仅使用 smbclient 获取文件夹

linux - 使用 'rm' 命令删除文件/文件夹时如何启用确认警报?

linux下的c++ flash

macos - QTCaptureDeviceWasConnectedNotification

linux - 用双引号替换行

regex - sed 删除文本的不同部分

c - 如何使用 select() 等待以太网接口(interface)状态变化?

objective-c - OS X 上的 AVPlayer 错误

shell - sed 替换字符串中不需要的部分

objective-c - 调整成为FirstResponder 和 resignFirstResponder 的 View 大小 - Cocoa (OS X)