web-dev-qa-db-ja.com

sedは出力をファイルに保存できますか?

>ならできます。

echo "text" > file

teeならできます。

echo "test" | tee file 

上記のいずれも使用せずにsedを実行できますか? >またはsedを使用せずにteeコマンドの出力をファイルに保存することは可能ですか?

45
Folatt

teeと>は、Linuxでのデータリダイレクトに使用するためのものなので、データリダイレクトに使用できます。

一方、sedはストリームエディタです。 sedはtとしてのデータリダイレクト用ではなく、>である必要があります。ただし、コマンドの組み合わせを使用してそれを行うことができます。

ティーを使用するか、sedで>

sed 's/Hello/Hi/g' file-name | tee file

または

sed 's/Hello/Hi/g' file-name > file

sedを-iオプションとともに使用する

sed -i 's/Hello/Hi/g' file-name

最後のものはリダイレクトせず、ファイル自体に変更を加えます。

65
ankidaemon

sedには、必要な機能を実行するwコマンドがあります。

wファイル名

現在のパターンスペースをファイル名に書き込みます。

sed 'w file'自体はtee fileと同じ効果があります。他にsedコマンドがある場合は、wを最後に置きます。

sed 's/This/That/;w file'

ただし、これは-n/--quiet/--silentオプションの影響を受けません。これにより、標準出力に出力されるはずのコンテンツのみが抑制されます。

11
JigglyNaga

Ankidaemonは、sed出力をファイルに保存する方法を正しく指摘しました。ファイルに対していくつかの操作、つまり置換を実行していて、出力を同じファイルに保存する場合は、これを追加します。 sedには-iフラグがあり、インプレース編集が可能です。ただし、これによりプロセス中にバックアップファイルが作成されます。それが必要ない場合は、空のファイル名を-iフラグに渡すだけで実行できます。

0
Waqar Ahmed