![유효하지 않은 문자를 찾는 방법은 무엇입니까? [폐쇄]](https://linux55.com/image/133172/%EC%9C%A0%ED%9A%A8%ED%95%98%EC%A7%80%20%EC%95%8A%EC%9D%80%20%EB%AC%B8%EC%9E%90%EB%A5%BC%20%EC%B0%BE%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%20%5B%ED%8F%90%EC%87%84%5D.png)
^M
"잘못된 문자"(예: control-m 문자 또는 문자가 전혀 없는 문자) 가 있는 레코드를 필터링하려고 합니다 .
예:
12345 vimal 1235566 ^zfood nation
Unix vi 모드에서 파란색으로 표시된 여기에서는 ^z
레코드에 유효하지 않거나 형식이 지정되지 않은 문자가 포함되어 있는지 확인하는 스크립트가 필요합니다.
답변1
파일에서 제어 문자가 포함된 모든 줄을 제거하려면 다음을 수행하십시오.
grep -v '[[:cntrl:]]' file >file.modified
그러면 .라는 이름의 새 파일이 생성됩니다 file.modified
. 이 -v
플래그는 grep
유틸리티가 수행한 일치의 의미를 반전시키고 [[:cntrl:]]
제어 문자가 포함된 행을 일치시킵니다.
C 로케일에서 인쇄할 수 없는 문자(예: 유니코드 문자)가 포함된 줄을 제거하려면 다음을 수행하십시오.
LC_ALL=C grep -v '[^[:print:]]' file >file.modified