在新行发布字符串Linux上的sed插入字符串

时间:2018-07-31 09:38:20

标签: linux awk sed

我一直在尝试将sed用于以下用途- 我正在文件中搜索以下关键字-

</Remote>

紧随其后,在新行上,尝试插入以下内容-

<ScanConfig filesToTest="ABCD_*.csv" namePatternLogic="0" scanMethod="0" subdirsScanLevel="" />

我尝试了标准的SED-

sed -i '</Remote>/a <ScanConfig filesToTest="ABCD_*.csv" namePatternLogic="0" scanMethod="0" subdirsScanLevel="" />' somefile.txt

OR

sed -i '\#^ *</Remote> *$# a\ <ScanConfig filesToTest="ABCD_*.csv" namePatternLogic="0" scanMethod="0" subdirsScanLevel="" />' somefile.txt

均失败,并出现以下错误-

sed: -e expression #1, char 1: unknown command: `<'
sed: -e expression #1, char 1: unknown command: `"'

我怀疑我要插入的行中包含<,/>字符的特殊字符使SED感到困惑。 我尝试将转义字符与/ \一起使用,尽管它无法解决问题。

有人可以帮我吗? 谢谢。

1 个答案:

答案 0 :(得分:1)

这应该工作

sed  -i '/<\/Remote>/a <ScanConfig filesToTest="ABCD_*.csv" namePatternLogic="0" scanMethod="0" subdirsScanLevel="" />' file.txt

在第一个脚本中,您忘了在sed表达式的开头添加“ /”。

如果将其用作sed分隔符,则还必须使用“ \ /”来匹配“ /”。