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

Bash 在多个文件中的特定位置插入一行,bash,shell,sed,find,Bash,Shell,Sed,Find,我正在寻找一种方法,将一行插入到文件中的特定位置 有点像这样: 但问题是,我想把输出写入同一个文件,在那里我得到输入,我需要用多个文件来完成 遗憾的是,这不起作用: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' -e

我正在寻找一种方法,将一行插入到文件中的特定位置

有点像这样:

但问题是,我想把输出写入同一个文件,在那里我得到输入,我需要用多个文件来完成

遗憾的是,这不起作用:
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>' {} > {} \;
find/usr/local/share/-iname'xyz.htm'-exec sed'19iTEXT

'{}>{}\;
但它不是这样工作的,所以我最后写了一个简短的脚本。但它仍然困扰着我,因为我一直认为它应该是可以做到的短(也许在线)和简单


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

如果我理解正确,您需要
-I
选项。
sed -i.bak '3iline 3' input.txt
它将在原始文件中进行更改。它不需要任何其他管道和重定向

sed -i.bak '3iline 3' input.txt
这将备份扩展名为.bak的原始文件

man sed

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