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'