我有一个包含用户的文件。文件格式如下:
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
该命令可以在"\"后面插入我不需要的额外空间。
请尝试以下操作:
sed -i "/groupname/ a'newuser' \ \" /path/to/file
sed -i '/groupname/ anewuser \' /path/to/file
这将适用于任何sed:
$ sed 's/(groupname:)/&
newuser \/' file
groupname:
newuser
username
username2
username3
这是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