我正在寻找一种方法将一条线插入文件中的特定位置。
有点像这样: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>' {} > {} \;
但它不能像这样工作,所以我最终编写了一个有效的短脚本。但它仍然困扰着我,因为我一直认为应该可以做到这一点(也许是在线)并且很容易。
我希望有人能指出我正确的方向。
答案 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)