CentOS和FreeBSD上的Sed

时间:2014-01-20 07:09:29

标签: sed freebsd

我有以下命令

sed '/.*href="\(backup[^"]*tbz\)".*/!d;s//\1/;q'

这适用于我的CentOS安装。

但是当我尝试在FreeBSD 上运行时出现以下错误:

sed: 1: "/.*href="\(backup[ ...": extra characters at the end of d command
(23) Failed writing body

这有什么问题? 谢谢!

2 个答案:

答案 0 :(得分:0)

尝试像这样运行:

sed '/.*href="\(backup[^"]*tbz\)".*/\!d;s//\1/;q'

请注意额外的 \ 字符转义!d命令

答案 1 :(得分:0)

显然FreeBSD sed不喜欢分号作为命令分隔符。请尝试使用多个-e选项:

sed -e '/.*href="\(backup[^"]*tbz\)".*/!d' -e 's//\1/' -e q

或者换行:

sed '/.*href="\(backup[^"]*tbz\)".*/!d
     s//\1/
     q'

(是的,这是一个很长的单引号字符串,里面有两个换行符。)