파일에 제어 Z(^Z) 문자가 있습니다. 나는 시도했지만 sed 's/^Z//g' file_name
성공하지 못했습니다. Perl 스크립트도 시도했지만 제거하지는 않았습니다. 이 캐릭터를 없애는 방법이 있으면 알려주세요.
답변1
생성된 제어 문자는 8진수 Ctrl+Z입니다 . \032
다음을 통해 삭제할 수 있습니다 tr
.
tr -d '\032' <file >newfile
이렇게 하면 파일의 모든 문자가 제거되고 newfile
수정된 내용으로 호출되는 새 파일이 생성됩니다.
sed
식이 줄 시작 부분의 문자 ^Z
와 일치하므로 명령 이 작동하지 않습니다. 나머지 표현식을 줄 시작 부분에 Z
고정합니다 .^
답변2
10진수 코드와 문자(이 경우 26)를 Ctrl+Z사용하여 일치시킬 수 있습니다 .\d
sed 's/\d26//g' < file > newfile
"posix" 대안(bash)은 다음과 같습니다:
sed $( echo 's/@//g' | tr '@' '\032' ) < file > newfile
tr은 정규 표현식의 "@"를 carachter Ctrl+Z(코드는 8진수 32)로 대체합니다.
답변3
$ sed 's/\^Z//g' filename
노트:특수 문자는 "\"를 사용하여 이스케이프해야 합니다.