使用Sed,我想使用"!"排除匹配"他"的行。这是一个例子。
echo "hello" |sed "/he/!s/hello/hi/"
令我惊讶的是,我的ubuntu 14返回
"bash !s/hello/hi: event not found"
错误。有任何想法吗?如何使用Sed?
排除与模式对应的行范围答案 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