如何在sed中插入一个允许在条目中使用反斜杠的新行

时间:2014-03-04 14:37:21

标签: regex bash sed awk

我有一个包含用户的文件。该文件的格式如下:

groupname:
username \
username2 \
username3 \

等等。

我正在自动将一部分用户添加到此文件中。我目前正在使用sed完成此操作,但我遇到了一个问题。这是我用于我的sed命令

sed -i '/groupname/ a\'newuser' \ \' /path/to/file

我的问题是上面的命令会在反斜杠之后输入一个空格,由于未知原因导致使用该文件的应用程序停止工作。

我尝试使用以下内容但没有正面结果

sed -i '/groupname/ a\'newuser' \\' /path/to/file
sed -i '/groupname/ a\'newuser \'\ /path/to/file
sed -i '/groupname/ a\"newuser \"\ /path/to/file
sed -i '/groupname/ a\'newuser' "\"\ /path/to/file

我认为我的下一步可能是祭祀牺牲,但是,我宁愿不必走那条路。

我确实用awk尝试了一件事,但是,我对此不太熟悉。

awk '{print} /groupname/{print "newuser \"}' /path/to/file

在“for”测试

开始时遇到一条关于未终止字符串的错误消息

任何建议都会以极大的热情得到满足,直到这样的仪式牺牲可能实际上成为现实,然后它只是悲伤的面孔。

提前致谢。

[编辑]

为了澄清,该命令是通过ssh从另一台服务器运行的。因此,从服务器A执行的命令如下:

ssh serverb "sudo sed -i '/groupname/ a\'newuser' \ \" /path/to/file

该命令适用于在“我”不需要的“\”之后插入额外空格的程度。

4 个答案:

答案 0 :(得分:2)

尝试以下:

sed -i "/groupname/ a\'newuser' \\ \\" /path/to/file

答案 1 :(得分:0)

sed -i '/groupname/ a\newuser \\' /path/to/file

答案 2 :(得分:0)

这适用于任何sed:

$ sed 's/\(groupname:\)/&\
newuser \\/' file
groupname:
newuser \
username \
username2 \
username3 \

答案 3 :(得分:0)

这是sed's个工作,但这里有一个awk选项:

awk -v t='newuser \' '/groupname/{print $0 ORS t;next}1' /path/to/file

您可以在awk变量(此处为t)中设置所需的任何文字。

或者,如果您更喜欢硬编码:

awk '/groupname/{print $0 ORS "newuser \\";next}1' /path/to/file