여기서 무엇을 놓치고 있는지 이해가 되지 않습니다.
$ echo 'testing' | sed -E 's/([a-z]*)ing/\1ing/g'
ing
출력이 원래대로 testing
다시 나타나기를 원합니까 ? 입력이 삼켜진 것처럼 보입니다. 즉, 그룹이 일치합니다. 그런데 왜 뱉어내지 않습니까?\1
test
\1
저는 xonsh 쉘과 GNU sed v4.3을 사용하는 macOS 10.12.2를 사용하고 있습니다.
답변1
xonsh(또는 Python)가 를 삼키고 있는 것으로 밝혀졌으므로 \1
sed는 실제로 이를 확인 's/([a-z]*)ing/ing/g
하고 출력은 물론 해당 입력에 대해 정확합니다.
나는 가지고있다여기에 문제가 열렸습니다.이에 대한 해결 방법은 Python 원시 문자열을 사용하는 것입니다.
$ echo 'testing' | sed -E r's/([a-z]*)ing/\1ing/g'
testing
\\1
이는 원치 않는 작업을 계속하는 것보다 POSIX 셸에서 오류가 발생하는 escaping()보다 바람직합니다 \1
.
하지만,@adqm 감사합니다, 큰따옴표 및 이스케이프된 백슬래시는 xonsh와 bash 간에 이식 가능합니다.
$ echo 'testing' | sed -E "s/([a-z]*)ing/\1ing/g"