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



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

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

相关内容

  • 没有找到相关文章

最新更新