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
두 개의 파이프가 하나의 파이프와 동일하게 동작하도록 하는 방법이 있습니까? 아니면 한 번의 호출로 여러 스트림 대체를 수행할 수 있는 방법이 있습니까? 또한 애초에 왜 다르게 동작하는 걸까요?
왜 이런 일을 하겠습니까?
다음과 같이 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'