4

我对 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

我该如何将它添加到正确的位置?

4

2 回答 2

7

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

sed -i "/listen_addresses/ s/^\(.*\)\('\)/\1, 192.0.0.0\2/" testfile
  • ^\(.*\):从行首到行尾匹配(贪婪)。
  • \('\): 从结尾回溯到'. 所以它将匹配字符串中的最后一个。
  • \1: 保存在第一对括号之间的内容。
  • , 192.0.0.0: 字面量字符串。
  • \2:保存在第二对括号之间的内容。
于 2012-10-03T10:13:13.587 回答
2

只需替换该' #行的一部分:

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

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

于 2012-10-03T10:13:34.353 回答