在脚本中使用sed

时间:2018-05-22 06:59:44

标签: linux bash shell sed

我正在尝试在文件中的现有文本行下插入一行文本,如下所示:

#!/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'

的未知选项

2 个答案:

答案 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