我正在尝试使用 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/'