我一直在尝试将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感到困惑。 我尝试将转义字符与/ \一起使用,尽管它无法解决问题。
有人可以帮我吗? 谢谢。
答案 0 :(得分:1)
这应该工作
sed -i '/<\/Remote>/a <ScanConfig filesToTest="ABCD_*.csv" namePatternLogic="0" scanMethod="0" subdirsScanLevel="" />' file.txt
在第一个脚本中,您忘了在sed表达式的开头添加“ /”。
如果将其用作sed分隔符,则还必须使用“ \ /”来匹配“ /”。