파일에서 제어 Z 문자를 제거하는 방법은 무엇입니까?

파일에서 제어 Z 문자를 제거하는 방법은 무엇입니까?

파일에 제어 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

노트:특수 문자는 "\"를 사용하여 이스케이프해야 합니다.

관련 정보