sed
ETA 연구실에 표시된 명령을 이해하려고 노력 중입니다.Rich의 sh(POSIX 쉘) 트릭페이지, 특히 팁쉘은 임의의 문자열을 인용합니다.:
quote () { printf %s\\n "$1" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/'/" ; }
sed
세 번째 명령( ) 에서 \$s/\$/'/
첫 번째 명령 $
은 쉘이 이를 가정된 변수로 해석하지 못하도록 이스케이프 처리되어 다음 과 같이 전달되고 올바르게 해석 $s
될 수 있음을 이해합니다.sed
마지막 줄명령의 주소 s
인데 왜 두 번째 명령을 탈출합니까 $
? 줄 끝 부분과 정확하게 일치하면 안 되나요?
답변1
줄 끝이 아닌 리터럴이 되도록 $
명령에서 정규식 끝을 이스케이프하면 됩니다 .sed
백슬래시가 셸에서 먹기 때문에 명령 sed
에 이스케이프가 없습니다 . $
표시되는 명령 sed
은 다음과 같습니다 $s/$/'/
(마지막 줄에서 줄 끝에 작은따옴표를 추가하세요).
결국 귀하의 질문 제목이 잘못되었습니다. sed
탈출이 아닌 쉘 탈출에 관한 것입니다.