>
ならできます。
echo "text" > file
tee
ならできます。
echo "test" | tee file
上記のいずれも使用せずにsed
を実行できますか? >
またはsed
を使用せずにtee
コマンドの出力をファイルに保存することは可能ですか?
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
最後のものはリダイレクトせず、ファイル自体に変更を加えます。
sed
には、必要な機能を実行するw
コマンドがあります。
wファイル名
現在のパターンスペースをファイル名に書き込みます。
sed 'w file'
自体はtee file
と同じ効果があります。他にsedコマンドがある場合は、w
を最後に置きます。
sed 's/This/That/;w file'
ただし、これは-n/--quiet/--silent
オプションの影響を受けません。これにより、標準出力に出力されるはずのコンテンツのみが抑制されます。
Ankidaemonは、sed出力をファイルに保存する方法を正しく指摘しました。ファイルに対していくつかの操作、つまり置換を実行していて、出力を同じファイルに保存する場合は、これを追加します。 sed
には-i
フラグがあり、インプレース編集が可能です。ただし、これによりプロセス中にバックアップファイルが作成されます。それが必要ない場合は、空のファイル名を-i
フラグに渡すだけで実行できます。