Sed 附加到文本文件中行的中间
我对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
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。也许你可以提出一个不同的问题,因为它似乎与这个问题无关。