Linux的hexdump
命令本身不支持直接过滤特定字节
echo -n "Hello, World!" | hexdump -C | grep -o -E '0x[0-9a-fA-F]+' | xargs -I {} sh -c 'echo "0x{}" | xxd -r -p'
这个命令的解释如下:
echo -n "Hello, World!"
:输出字符串"Hello, World!",不包括换行符。hexdump -C
:以十六进制格式输出字符串,并使用逗号分隔每个字节。grep -o -E '0x[0-9a-fA-F]+'
:使用正则表达式过滤出以"0x"开头的十六进制数。xargs -I {} sh -c 'echo "0x{}" | xxd -r -p'
:将过滤出的十六进制数传递给xxd
命令,将其转换回原始字符串。这个命令会输出"Hello, World!“中的每个字节对应的十六进制表示。如果你需要过滤特定的字节,可以在grep
命令中使用更精确的正则表达式。例如,如果你想过滤出所有的"0x48”(对应ASCII字符’H’),可以使用以下命令:
echo -n "Hello, World!" | hexdump -C | grep -o -E '0x48' | xargs -I {} sh -c 'echo "0x{}" | xxd -r -p'