使用Sed

时间:2016-10-23 17:18:41

标签: sed

使用Sed,我想使用"!"排除匹配"他"的行。这是一个例子。

echo "hello" |sed "/he/!s/hello/hi/"

令我惊讶的是,我的ubuntu 14返回

"bash !s/hello/hi: event not found"

错误。有任何想法吗?如何使用Sed?

排除与模式对应的行范围

1 个答案:

答案 0 :(得分:2)

您已启用历史记录扩展。您需要使用set +H禁用它。

实施例

让我们启用历史记录扩展并运行您的命令:

$ set -H
$ echo "hello" |sed "/he/!s/hello/hi/"
bash: !s/hello/hi/: event not found

现在,让我们禁用它并观察命令现在正确运行且没有错误:

$ set +H
$ echo "hello" |sed "/he/!s/hello/hi/"
hello

替代

如果您要启用历史记录扩展,请单引号字符串:

$ set -H
$ echo "hello" |sed '/he/!s/hello/hi/'
hello