首页 > 解决方案 > Sed 在换行后的字符串 Linux 上插入字符串

问题描述

我一直在尝试将 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

或者

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。我尝试在 /\ 中使用转义字符,尽管它并没有解决问题。

有人可以帮我吗?谢谢。

标签: linuxawksed

解决方案


这个应该工作

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

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

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


推荐阅读