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'