![파일에서 제어 Z 문자를 제거하는 방법은 무엇입니까?](https://linux55.com/image/136364/%ED%8C%8C%EC%9D%BC%EC%97%90%EC%84%9C%20%EC%A0%9C%EC%96%B4%20Z%20%EB%AC%B8%EC%9E%90%EB%A5%BC%20%EC%A0%9C%EA%B1%B0%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
파일에 제어 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
노트:특수 문자는 "\"를 사용하여 이스케이프해야 합니다.