使用流编辑更改 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

有没有办法让两根管子的情况与一根管子的情况一样?或者有没有一种方法可以在一次调用中进行多个流替换?另外,为什么它的行为首先会有所不同?

为什么有人会这样做?

我想编写一个 bash 调用,它会自动编辑 ip 地址,如下所示:

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'

相关内容