sed从文件中删除空字节的咒语是什么?我想:
s/\000//g
Run Code Online (Sandbox Code Playgroud)
但这是剥离零字符串。
s/\x00//g
Run Code Online (Sandbox Code Playgroud)
好像没有效果。我正在尝试在sed脚本中执行此操作,因此我不确定该echo技巧是否有效。
Tam*_*man 54
我不知道您如何使用 来实现这一点sed,但这是一个适用于tr以下的解决方案:
tr < file-with-nulls -d '\000' > file-without-nulls
Run Code Online (Sandbox Code Playgroud)
这是一个sed适用于以下某些(但不是全部)实现的解决方案sed:
sed 's/\x0//g' file1 > file2
Run Code Online (Sandbox Code Playgroud)
这是一个解决方案,涉及替换为适用于所有场合的空格字符:
sed 's/\x0/ /g' file1 > file2
Run Code Online (Sandbox Code Playgroud)
tr绊倒了我文件中的其他一些字节并且sed没有替换任何内容。我最终不是sed用 Python 而是用 Python 完成的:
f = open('file-with-0bytes.dump')
for l in f.readlines():
print l.replace("\0", '')
Run Code Online (Sandbox Code Playgroud)
这是一个可管道的单衬里:
python -c 'import sys; sys.stdout.write(sys.stdin.read().replace("\0", ""))'
Run Code Online (Sandbox Code Playgroud)
我还注意到一些命令实际上将空字节留在那里,但它们不再可见,至少不在 OSX 终端中。我曾经hexdump调试过这个。
使用 Perl 执行正则表达式非常容易。只需替换sed为perl -np -e:
$ printf 'one\0two\0' | perl -np -e 's/\0/\n/g'
one
two
Run Code Online (Sandbox Code Playgroud)
使用该-n选项,正则表达式将逐行运行,就像 sed 一样。
如果您想使用零字节作为记录分隔符,请使用 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
Run Code Online (Sandbox Code Playgroud)
您可以通过运行来查找 Perl 的命令行选项perldoc perlrun。
| 归档时间: |
|
| 查看次数: |
53737 次 |
| 最近记录: |