이 간단한 sed 스크립트가 작동하지 않는 이유는 무엇입니까? "nginx -V 2>&1 | sed -r 's/--/\\n/g'"

이 간단한 sed 스크립트가 작동하지 않는 이유는 무엇입니까? "nginx -V 2>&1 | sed -r 's/--/\\n/g'"

"nginx -V"의 출력은 엉망입니다.

nginx 버전: nginx/1.9.3(Ubuntu) OpenSSL 1.0.2d로 구축 2015년 7월 9일 TLS SNI 지원 구성 매개변수 활성화: --with-cc-opt='-g -O2 -fPIE -fstack-protector-strong - Wformat -Werror=format-security -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' - -prefix = /usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/ var/ 로그 /nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/ lib/ nginx /body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-

그래서 나는 오류 출력을 stdout으로 리디렉션하고 전체 줄을 분할하는 간단한 스크립트를 작성했습니다.

nginx -V 2>&1 | sed -r 's/--/\\n/g'

작동하지 않습니다.

nginx -V 2>&1 | sed -r s/--/\\n/g

이것은 효과가 있는데 왜 그런지 모르겠습니다.

답변1

테스트용:

$ echo "configure arguments: --with-cc-opt=" | | sed -r 's/--/\\n/g'

작동하지 않습니다. 하지만 이것은:

$ echo "configure arguments: --with-cc-opt=" | sed -r 's/--/\n/g'

실제로 작동한다. 너무 너무:

$ echo "configure arguments: --with-cc-opt=" | sed -r s/--/\\n/g

즉, 작동하지 않습니다 . 백슬래시 합계 '\\n'로 해석됩니다 . 참조 메커니즘 중 하나를 제거하면 문제가 해결됩니다.\n

관련 정보