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

use*_*342 0 sed

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

Ste*_*itt 5

您需要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)