【问题标题】:need help porting a sed command from debian to OSX需要帮助将 sed 命令从 debian 移植到 OSX
【发布时间】:2011-06-21 17:05:55
【问题描述】:

这是为您提供的 sed 专家。我真的对 sed 了解得不够多,无法完全分解。它是在一些标准的 Linux 发行版上编写的,我需要它在 OSX 上运行。

COMPILE_FILES=$(sed -nr '/<script type="text\/javascript"/ { s%^.*src="\{\$baseUrl\}/([^"]+)".*$%\1%p }' templates/common/minifiedScripts.tpl)

第一件事是 r 标志在 OSX 版本的 sed 上不存在。我认为等效的是-E,所以改变了它。但后来我得到:

sed: 1: "/<script type="text\/ja ...": bad flag in substitute command: '}'

谢谢!

【问题讨论】:

  • Dangit,我投票结束了错误的问题。请忽略我对这个问题的近距离投票,并关闭the other one 作为一个副本。

标签: macos shell command-line sed


【解决方案1】:

OS X sed 不喜欢使用分号一起运行的多个命令或在花括号中分组(这在您拥有的命令中不是必需的)。试试这个:

COMPILE_FILES=$(sed -n -E '/<script type="text\/javascript"/ s%^.*src="\{\$baseUrl\}/([^"]+)".*$%\1%p' templates/common/minifiedScripts.tpl)

如果您有一个包含多个命令的 sed 脚本,则必须使用 -e 分解它们:

sed -n -E -e '/match/ {' -e 's/foo/bar/' -e 's/baz/qux/' -e 'p' -e '}'

【讨论】:

    【解决方案2】:

    -r 使用扩展的正则表达式集,而您使用的是 OSX 版本不支持的。试试 MacPorts 或 Fink——他们有 gnu sed 的端口。或者您可以直接下载并编译源代码。

    【讨论】:

      猜你喜欢
      • 2011-12-17
      • 2020-08-19
      • 2018-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-28
      • 2010-09-09
      • 1970-01-01
      相关资源
      最近更新 更多