在一个多个文件中的特定位置插入一行

时间:2013-07-12 11:08:29

标签: bash shell sed find

我正在寻找一种方法将一条线插入文件中的特定位置。

有点像这样:using sed

但问题是,我想将输出写入我获取输入的同一文件中,我需要使用多个文件。

遗憾的是,这不起作用:sed '3iline 3' input.txt > input.txt

这样可行:sed '3iline 3' input.txt > tmp.txt && cat tmp.txt > input.txt

但我不再使用find和exec ......

我希望这样的事情是可能的:

find /usr/local/share/ -iname 'xyz.htm' -exec sed '19i<p>TEXT</p>' {} > {} \;

但它不能像这样工作,所以我最终编写了一个有效的短脚本。但它仍然困扰着我,因为我一直认为应该可以做到这一点(也许是在线)并且很容易。

我希望有人能指出我正确的方向。

1 个答案:

答案 0 :(得分:2)

如果我理解正确,您需要-i选项。 哪个会对原始文​​件进行更改。它不需要任何其他管道和重定向。

sed -i.bak '3iline 3' input.txt

这将使用扩展名为.bak的原始文件进行备份。

来自man sed

 -i[SUFFIX], --in-place[=SUFFIX]
       edit files in place (makes backup if extension supplied)
相关问题