2012-11-27 2 views

답변

3

읽기 파일 이름 "FILE_NAME"로, 모든 기호를 \000 (널 기호를) 삭제는, 는 \n 또는 #\040-\0176 사이가 아닌 모든 문자를 대체 그리고 마지막으로 쓰기 결과를 "new_file.out"

+0

... 쓸모없이,이 모든 것이 Perl만으로 쉽게 수행 될 수 있기 때문에. – tripleee

+0

"쓸모없는"조금 과장되어 있습니다. 그것이 필요한 것보다 더 많은 단계를 수행한다고 가정 해 봅시다. –

3

이 두 가지 않습니다 : 파일에서

  1. 스트립 어떤 널 (null)을
  2. 인쇄 할 수없는 문자는 모두 '#'문자로 바꿉니다.
2

-i은 "입력 파일을 내부 수정"을 의미하고 입력 파일이 없기 때문에 perl -pi이 나를 염려합니다.

나는 전체 명령 줄이 cat을 제거하고`TR 그냥

perl -pe 's/[^\n\040-\176]/#/g' file_name > new_file.out 

를 사용하여 그리고 실제로 -i 스위치를 이용할 수 있으며, 단지 사용에 의해 단축 될 수 있다고 생각

perl -p -i -e's/[^\n\040-\176]/#/g' file_name 

이고 정리 된 버전은 file_name 파일에 저장됩니다. 당신은 안전을 위해 백업 버전을 원하는 경우

, -i.bak-i을 변경하고는 file_name에 새로운 내용을 넣어 file_name.bak에 이전을 유지합니다.

참고 : 내 버전이 정확히 일치하지 않습니다. 아래 의견을 참조하십시오.

+1

실제로. nul 문자를 제거하고 다른 모든 제어 문자를 해시로 바꾸는 데는 작은 점이있는 것 같습니다. – Borodin

+0

그게 좋은 소식입니다. 내 버전은 원본과 동일하지 않습니다. 원래, NUL은 제거 될 것이지만, 나의 버전에서는'# '로 대체 될 것입니다. –

관련 문제