有人可以告诉我为什么sed不会删除我的NULL?
这是在OS X上
$ printf '123\x00456' | sed 's/\x00/Z/g' | hexdump
0000000 31 32 33 00 34 35 36 0a
这也不起作用:
$ printf '123'$(echo "\000")'456' | sed 's/'$(echo "\000")'/Z/g' | hexdump
0000000 31 32 33 00 34 35 36 0a
答案 0 :(得分:1)
为了删除单个字符或将单个字符翻译成单个其他字符(不包括多字节字符),tr
可以执行此操作,与sed不同,它支持所有版本的unix中的所有字符,包括NUL从一开始。
翻译:
tr '\0' Z
并删除:
tr -d '\0'