답변:
나는 이것을 어떻게 정확하게 달성 할 수 있는지 모르겠지만 다음과 함께 sed
작동하는 솔루션입니다 tr
.
tr < file-with-nulls -d '\000' > file-without-nulls
이것은 sed
어떤 경우에는 효과가 있지만 전부는 아닙니다.
sed 's/\x0//g' file1 > file2
이것은 모든 경우에 작동 해야하는 공백 문자로 교체하는 솔루션입니다.
sed 's/\x0/ /g' file1 > file2
-i
파일을 제자리로 변환하는 매개 변수.
tr
내 파일의 다른 바이트를 sed
넘어서서 아무것도 바꾸지 않았습니다. 나는 그것을 sed
파이썬이 아니라 파이썬 에서 끝내 었습니다 .
f = open('file-with-0bytes.dump')
for l in f.readlines():
print l.replace("\0", '')
파이프 형 원 라이너 는 다음과 같습니다 .
python -c 'import sys; sys.stdout.write(sys.stdin.read().replace("\0", ""))'
또한 일부 명령은 실제로 null 바이트를 남겨 두지 만 적어도 OSX 터미널에는 더 이상 표시되지 않습니다. 나는 hexdump
이것을 디버깅 하는 데 사용 했다.
정규 표현식을 수행하기 위해 Perl을 사용하는 것은 매우 쉽습니다. 그냥 교체 sed
와 함께 perl -np -e
:
$ printf 'one\0two\0' | perl -np -e 's/\0/\n/g'
one
two
이 -n
옵션을 사용하면 정규식은 sed와 같이 한 줄씩 실행됩니다.
0 바이트를 레코드 구분 기호로 사용하려면 Perl의 -0
옵션을 사용하십시오.
$ printf 'one\0two\0' | perl -np0 -e 's/^/prefix /; s/\0/\n/g'
prefix one
prefix two
$ printf 'one\0two\0' | perl -np -e 's/^/prefix /; s/\0/\n/g'
prefix one
two
을 실행하여 Perl의 명령 행 옵션을 찾을 수 있습니다 perldoc perlrun
.