使用 sed 命令搜索句子并将其替换为空格

使用 sed 命令搜索句子并将其替换为空格

我正在尝试使用 sed 命令来替换文件中的某些文本。

echo 'native_transport_port: 9042' | sed -E 's/native_transport_port:/\W9042/native_transport_port:9080'

我收到错误:sed: 1: "s/native_transport_port ...": bad flag in substitute command: 'n'

我尝试过echo 'native_transport_port: 9042' | sed -E 's/native_transport_port:\s9042/native_transport_port:\s9080' 但出现错误:sed: 1: "s/native_transport_port ...": unterminated substitute in regular expression

我基本上是在尝试搜索 native_transport_port 并将 9042 替换为 9080。

答案1

您需要用s最后一个命令来结束命令/

sed -E 's/native_transport_port:\s9042/native_transport_port:\s9080/'

当我这样做时,\s替换部分并不意味着有什么特别的,它变成了s;所以你应该这样做

sed -E 's/native_transport_port:\s9042/native_transport_port: 9080/'

或者,如果您想按原样重现空白,

sed -E 's/(native_transport_port:\s)9042/\19080/'

它在替换中重新使用匹配的文本。

如果您sed不支持 Perl-style \s,您可以改为按空格匹配:

sed 's/native_transport_port: 9042/native_transport_port: 9080/'

相关内容