附加到文本文件sed中的一行中间

Sar*_*h92 4 sed

我是sed脚本的新手.我一直在研究如何将文本添加到文件中并设法将我想要的文本添加到文件中的正确行但无法找到将其添加到正确位置的方法!

所以我在文本文件中的行看起来像这样

  listen_addresses = 'localhost, 192.0.0.0' # what IP address(es) to listen on;
Run Code Online (Sandbox Code Playgroud)

我想添加一个IP,所以该行看起来像:

   listen_addresses = 'localhost, 192.0.0.0, 192.0.0.0'  # what IP address(es) to listen on;
Run Code Online (Sandbox Code Playgroud)

通过反复试验,我只有:

   sed -i '/listen_addresses/ s/.*/&,192.0.0.0/' testfile
Run Code Online (Sandbox Code Playgroud)

这使:

  listen_addresses = 'localhost, 192.0.0.0' # what IP address(es) to listen on; 192.168.0.0
Run Code Online (Sandbox Code Playgroud)

如何将其添加到正确的位置?

Bir*_*rei 7

有很多方法.其中一个可能是搜索最后一个'并使用括号来保存匹配的数据.我将单引号更改为双引号,因为我想在正则表达式中匹配其中一个:

sed -i "/listen_addresses/ s/^\(.*\)\('\)/\1, 192.0.0.0\2/" testfile
Run Code Online (Sandbox Code Playgroud)
  • ^\(.*\):匹配从开头到结尾(灰烬).
  • \('\):从最终回溯到a '.所以它将匹配字符串中的最后一个.
  • \1:第一对括号之间保存的内容.
  • , 192.0.0.0:文字字符串.
  • \2:内容保存在第二对括号之间.