종료되지 않은 s 명령, 특수 문자가 있는 시드 및 sed

종료되지 않은 s 명령, 특수 문자가 있는 시드 및 sed

$VALUE의 내용에 특수 문자가 있는데 이를 파일( )에 추가하고 싶습니다 $FILE.

이 명령을 실행할 때:

sed -i "s|T_VALUE|$VALUE|" "$FILE"

오류가 발생했습니다. 명령이 종료되지 않았습니다.

$VALUE특수 문자를 이스케이프 처리해야 한다는 글을 본 적이 있는데 동적 값인 줄은 몰랐습니다 . 이 문제를 어떻게 해결할 수 있나요?

답변1

보다 우아한 인용을 위해 Perl을 사용할 수 있습니다. 혼동을 피하기 위해 환경 변수를 통해 매개변수를 전달할 수 있습니다.

$ SUB_LH='?|'
$ SUB_RH='/\'
$ cat mydata.txt
x?|y
?|ab?|
$ SUB_LH=$SUB_LH SUB_RH=$SUB_RH perl -p -i.bak -e 's/\Q$ENV{SUB_LH}\E/$ENV{SUB_RH}/g' mydata.txt
$ cat mydata.txt
x/\y
/\ab/\

관련 정보