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


33

> 出来る。

echo "text" > file

tee 出来る。

echo "test" | tee file 

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


ここに質問を投稿する前に、自分で答えを見つけてください。ユーザーに最初に求めることは、投稿する前に検索して調査することです。あなたがする必要があるのはsed '' file > newfile、他のプログラムとまったく同じように>実際に使用できることを見たことでしょうsed
テルドン

1
それはまだ>演算子を使用しています。代わりに使用できるsedコマンドがあるかどうかに興味がありました。しかし、この質問がひどい場合は削除します。
フォラット

ああ、そう。OK、それは非常に異なる質問です。あなたがsed -i答えを受け入れたので、私はあなたの質問を編集し、あなたが何を求めているかを明確にします。
テルドン

私は「受け入れられsed たようなデータのリダイレクト用に意図されていないtee>あることを意味し(ています)」。
フォラット

回答:


49

teeおよび>は、Linuxでのデータリダイレクトに使用されるため、データリダイレクトに使用できます。

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

teeまたは>をsedとともに使用する

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

または

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

-iオプションでsedを使用します

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

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


2
ありがとう。あなたは私の質問を理解しました。答えはノーです。オプションをsed使用してバックアップファイルを作成することもできるため、それで十分だと思いました-i.bak
フォラット

2
正しい。また、-i.bakは固定オプションではありません。任意の拡張子を使用できます。これはバックアップファイルに含めるものです。例えば -i.logも機能します。:)
あきだえもん

私は実際に探していたものを追加したいだけでecho "test" | dd of=file status=none、あいまいな出力リダイレクトを使用せずにエコーの出力を抑制します2> /dev/nullが、代わりにsedの制限を求めました。ファイルに行を追加できるsedの機能には本当に感銘を受け、sedはteeができることなら何でもできるという印象を与えました。
フォラット

11

sed持っていwて、必要なものを行う可能性がありますコマンドを:

wファイル名

現在のパターンスペースをfilenameに書き込みます。

sed 'w file'単独でと同じ効果がありtee fileます。他のsedコマンドがある場合は、w最後に入力します:

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

ただし、これは-n/--quiet/--silentオプションの影響を受けません。そうしないと、標準出力に移行するコンテンツが抑制されるだけです。


0

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.