나는 Perl에 익숙하지 않다. 나는이 실행의 효과가 무엇인지 알고 싶어이 cat/tr/perl 명령 파이프 라인은 무엇을합니까?
이cat file_name | tr -d '\000' | perl -pi -e 's/[^\n\040-\176]/#/g' > new_file.out
나는 Perl에 익숙하지 않다. 나는이 실행의 효과가 무엇인지 알고 싶어이 cat/tr/perl 명령 파이프 라인은 무엇을합니까?
이cat file_name | tr -d '\000' | perl -pi -e 's/[^\n\040-\176]/#/g' > new_file.out
읽기 파일 이름 "FILE_NAME"로, 모든 기호를 \000
(널 기호를) 삭제는, 는 \n
또는 #
에 \040-\0176
사이가 아닌 모든 문자를 대체 그리고 마지막으로 쓰기 결과를 "new_file.out"
이 두 가지 않습니다 : 파일에서
-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
에 이전을 유지합니다.
참고 : 내 버전이 정확히 일치하지 않습니다. 아래 의견을 참조하십시오.
실제로. nul 문자를 제거하고 다른 모든 제어 문자를 해시로 바꾸는 데는 작은 점이있는 것 같습니다. – Borodin
그게 좋은 소식입니다. 내 버전은 원본과 동일하지 않습니다. 원래, NUL은 제거 될 것이지만, 나의 버전에서는'# '로 대체 될 것입니다. –
... 쓸모없이,이 모든 것이 Perl만으로 쉽게 수행 될 수 있기 때문에. – tripleee
"쓸모없는"조금 과장되어 있습니다. 그것이 필요한 것보다 더 많은 단계를 수행한다고 가정 해 봅시다. –