SED - 문자 4: 종료되지 않은 's' 명령

SED - 문자 4: 종료되지 않은 's' 명령

내 스크립트에서 다음 오류가 발생합니다. 문제를 식별하는 데 도움을 줄 수 있나요?

sed "s/$(printf "\302")/ /g" file1 > file1_new
sed: -e expression #1, char 4: unterminated `s' command

하지만 이 방법은 문제 없이 잘 작동합니다.

sed "s/$(printf "\240")/ /g" file1 > file1_new
cat file1_new > file1
rm file1_new

첫 번째에는 문제가 없나요?

답변1

sed바이너리 교체가 잘 작동하지 않는 것 같습니다 . 방금 당신이하고있는 일을 테스트했는데 tr작동하는 것 같습니다. 실제로 다음 명령 하나만으로 쉽게 수행할 수 있습니다.

cat /path/to/file1 | tr "$(printf "\302\240")" " " > /path/to/file1_new

tr첫 번째 인수의 문자 집합을 두 번째 인수의 문자 집합으로 "변환"하는 도구입니다(필요한 경우 첫 번째 인수 집합의 길이와 일치하도록 확장됨). 그래서 우리는 여러분이 시도한 것처럼 각 문자를 공백으로 변환합니다 sed.

답변2

8진수/16진수 숫자에 직접 액세스할 수 있습니다 sed.

sed -e 's/\o302/ /g'  #in octal
sed -e 's/\xC2/ /g'   #in hex

관련 정보