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