我正在尝试使用sed在字符串匹配后插入一些文本,并且我无法将前导回车符回到附加文本中。我有......
sed -i "/^#Comment to append text after/a \n[$username.conn]\nipAddress=$ipAddr\nportNumber=$portNum" file
我希望在该3行插入之前返回一个回车符,因此输出为......
#Comment to append text after
[$username.conn]
ipAddress=xxx.xxx.xxx.xxx
portNum=yyyy
但是在\n
前放[$username.conn]
会导致领先n ...
#Comment to append text after
n[$username.conn]
ipAddress=xxx.xxx.xxx.xxx
portNum=yyyy
有关如何执行此操作的任何建议吗?
答案 0 :(得分:2)
我认为问题是由于sed
中反斜杠的特殊处理:
sed "/^#Comment to append text after/a\\\n[$username.conn]\nipAddress=$ipAddr\nportNumber=$portNum" input
或更清楚:
sed '/^#Comment to append text after/a \
\
['$username'.conn]\
ipAddress='$ipAddr'\
portNumber='"$portNum" input
答案 1 :(得分:0)
我不确定原因,但使用\\n
代替\n
(第一次)对我有效。
像这样:
sed -i“/ ^#注释在/ a \\ n [$ username.conn] \ nipAddress = $ ipAddr \ nportNumber = $ portNum”/ usr / Jas / conf / drp之后附加文本。 INI
我在gnu的sed commnad上试过这个。