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 に答える