ストリーム編集を使用してbash出力を変更する

ストリーム編集を使用してbash出力を変更する

bashを次のように呼び出すと、bash|sed 's/a/b/g'bashが "a"を出力するたびに "b"に置き換えられます。

$ bash|sed 's/a/b/g'
$ echo aaa
bbb
$ exit

ただし、次の代替項目を追加すると、

bash|sed 's/a/b/g'|sed 's/c/d/g'` 

すべての出力はbash呼び出しを終了した後にのみ表示されます。

$ bash|sed 's/a/b/g'|sed 's/c/d/g'
$ echo a
$ echo c
$ exit
b
d

2つのパイプを1つのパイプと同じように動作させる方法はありますか?それとも、1回の呼び出しで複数のストリーム置換を実行する方法はありますか?また、そもそもなぜ異なる動作をするのでしょうか?

なぜこのようなことをしますか?

次のようにIPアドレスを自動的に編集するbash呼び出しを作成したいと思います。

bash|sed -r 's/([0-9]{1,3}\.){3}[0-9]{1,3}(\/[0-9]{1,2})?/███.███.███.███/g'

それはうまくいきますが、ip-v6のような追加の置き換えを実行したい場合はもう機能しません。

これが私が試したことです。

bash|sed -r 's/([0-9]{1,3}\.){3}[0-9]{1,3}(\/[0-9]{1,2})?/███.███.███.███/g' | sed -r 's/([0-9a-f]{0,4}:){5,7}[0-9a-f]{0,4}(\/[0-9]{1,2})?/████:████:████:████:████:████:████:████:████/g'

ベストアンサー1

おすすめ記事