为什么sed不会删除我的NULL? (OS X)

时间:2012-07-26 20:47:38

标签: macos shell sed

有人可以告诉我为什么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

1 个答案:

答案 0 :(得分:1)

为了删除单个字符或将单个字符翻译成单个其他字符(不包括多字节字符),tr可以执行此操作,与sed不同,它支持所有版本的unix中的所有字符,包括NUL从一开始。

翻译:

tr '\0' Z

并删除:

tr -d '\0'