我有一个包含用户的文件。该文件的格式如下:
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
该命令适用于在“我”不需要的“\”之后插入额外空格的程度。
答案 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