我正在尝试在文件中的现有文本行下插入一行文本,如下所示:
#!/bin/bash
MATCH='Text_To_Look_For'
INSERT='Text_To_Add'
FILE='/home/user/test.txt'
echo "Modifying file..."
sed -i 's/"$MATCH/$MATCH"\n"$INSERT"/' $FILE
echo "Done."
我尝试了/
'
和"
的各种组合,但似乎无法使其发挥作用。该脚本现在将运行但不插入任何内容。在其他格式中,我不断收到与以下相关的错误:
unterminated s命令 sed:-e表达式#1,char 35:`s'
的未知选项
答案 0 :(得分:1)
你没有说你正在使用什么版本的sed,我在MacOS上看到了类似的东西,其中标准的sed相当差...通过安装GNU Sed来处理(稍后调用{{1 }})。
无论如何,你能尝试一下sed gsed
命令(代表追加):
a
祝你好运, 亚雷克
答案 1 :(得分:0)
-i
的{{1}}选项后面应加上文件扩展名,请参阅sed
: -i extension - 就地编辑文件,使用指定的扩展名保存备份的
它正在尝试使用您的man sed
命令作为文件扩展名!
试试这个:
s
请注意,sed -i .bak s/$MATCH/$MATCH\n$INSERT/ "$FILE"
选项是非标准版,-i
版本不同。例如,您可能必须删除空格:
sed
sed -i.bak s/$MATCH/$MATCH\n$INSERT/ "$FILE"
的替代方法是:
-i