在某个模式之前在多个文件中插入文本

时间:2014-05-07 01:13:12

标签: linux sed

名为animals的原始文件如下所示:

dog
cat
dolphin
cat

此命令有效sed '/dog/i\ Linux Scripting' animalsLinux Scripting之前放置dog,我得到以下内容:

 Linux Scripting
dog
cat
dolphin
cat

然而,如果我在此之后对动物进行了检查,则文件不会改变。

$ head animals
dog
cat
dolphin
cat

如何以覆盖现有文件的方式执行此操作?

注意:对于多个文件我希望animals*.txt

重新联系

1 个答案:

答案 0 :(得分:0)

您可以使用-i选项进行文件内更改。

$ sed '/dog/i\ Linux Scripting' animals
 Linux Scripting
dog
cat
dolphin
cat

$ sed -i '/dog/i\ Linux Scripting' animals

$ cat animals
 Linux Scripting
dog
cat
dolphin
cat

来自man页面:

-i[SUFFIX], --in-place[=SUFFIX]

               edit files in place (makes backup if SUFFIX supplied)

因此,您可以通过传递后缀来创建原始文件的备份。这可以通过以下方式来完成:

sed -i.bak '/dog/i\ Linux Scripting' animals

这将对您的animals文件进行文件内更改,但如果您需要原始文件,则会创建animals.bak文件。