在sed中插入前导回车符

时间:2013-04-17 16:36:46

标签: bash sed

我正在尝试使用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

有关如何执行此操作的任何建议吗?

2 个答案:

答案 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上试过这个。