Sed 附加到文本文件中行的中间

Sed 附加到文本文件中行的中间,sed,Sed,我对sed脚本是完全陌生的。我一直在研究如何将文本添加到文件中,并设法将文本添加到文件中的正确行,但找不到将其添加到正确位置的方法 所以我在文本文件中的行看起来像这样 listen_addresses = 'localhost, 192.0.0.0' # what IP address(es) to listen on; 我想添加一个IP,使线路看起来像: listen_addresses = 'localhost, 192.0.0.0, 192.0.0.0' # what IP

我对sed脚本是完全陌生的。我一直在研究如何将文本添加到文件中,并设法将文本添加到文件中的正确行,但找不到将其添加到正确位置的方法

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

  listen_addresses = 'localhost, 192.0.0.0' # what IP address(es) to listen on;
我想添加一个IP,使线路看起来像:

   listen_addresses = 'localhost, 192.0.0.0, 192.0.0.0'  # what IP address(es) to listen on;
通过反复试验,我只有:

   sed -i '/listen_addresses/ s/.*/&,192.0.0.0/' testfile
其中:

  listen_addresses = 'localhost, 192.0.0.0' # what IP address(es) to listen on; 192.168.0.0

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

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

sed -i "/listen_addresses/ s/^\(.*\)\('\)/\1, 192.0.0.0\2/" testfile
  • ^\(.*)
    :从开始到行尾(问候)匹配
  • \('\)
    :从结尾回溯到
    '
    。所以它将匹配字符串中的最后一个
  • \1
    :保存在第一对括号之间的内容
  • ,192.0.0.0
    :文本字符串
  • \2
    :保存在第二对括号之间的内容
只需更换该行的
“#
部分:

sed -i "/listen_addresses/ s/' #/, 192.0.0.0' #/" testfile

请注意,我使用了双引号,因此可以轻松插入单引号。

感谢您的建议,我对sed完全陌生,正在努力学习,我可以请您对您的脚本进行更多解释吗?什么是\2/“到底是为了什么?@SarahAddis:编辑后添加了解释。很抱歉再次发表评论!我将此命令作为python SSH.execute命令的一部分使用,虽然此命令在远程服务器上完全可以手动执行,但它不能作为脚本的一部分工作,因为它不能正确地中断\1或\2!!我尝试过尝试和使用其他建议,但它完全弄乱了文件中的行!还有其他方法保存内容吗?我知道这是一个python问题,与sed无关。我只是想知道是否有一种简单的方法来编辑sed@萨拉哈迪斯:对不起。我没办法。不知道Python或SSH。也许你可以提出一个不同的问题,因为它似乎与这个问题无关。