我正在尝试使用 sed 命令替换文件中的一些文本。
echo 'native_transport_port: 9042' | sed -E 's/native_transport_port:/\W9042/native_transport_port:9080'
Run Code Online (Sandbox Code Playgroud)
我收到一个错误: 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。
您需要s
使用 final完成命令/
:
sed -E 's/native_transport_port:\s9042/native_transport_port:\s9080/'
Run Code Online (Sandbox Code Playgroud)
当我在做的时候,\s
在替换部分并不意味着什么特别的,它变成了s
;所以你应该这样做
sed -E 's/native_transport_port:\s9042/native_transport_port: 9080/'
Run Code Online (Sandbox Code Playgroud)
或者,如果您想按原样重现空白,
sed -E 's/(native_transport_port:\s)9042/\19080/'
Run Code Online (Sandbox Code Playgroud)
它在替换中重新使用匹配的文本。
如果您sed
不支持 Perl-style \s
,则可以在空间上进行匹配:
sed 's/native_transport_port: 9042/native_transport_port: 9080/'
Run Code Online (Sandbox Code Playgroud)