0

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

有点像这样:使用 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>' {} > {} \;

但它不像这样工作,所以我最终写了一个有效的短脚本。但这仍然困扰着我,因为我一直认为应该可以简短(也许在线)和简单地做到这一点。

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

4

1 回答 1

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)
于 2013-07-12T11:17:58.520 回答