我有一系列管道命令,可以获取表示为十六进制字符串的内存转储。此内存转储包含一些我想要读取的 ASCII 文本。内存转储的字节序意味着每当我通过管道将其传输到 时xxd -p -r
,我都会得到按顺序出现的 4 个字符组,但每个组中的字符以相反的顺序出现。我正在寻找<something>
可以撤消该订单的内容。
例如,<something>
会这样做:
$ echo "lleHoW o!dlr" | <something>
Hello World!
或者
$ echo "43218765" | <something>
12345678
答案1
这是一个简单的基于正则表达式的重写。
sed 's/\(.\)\(.\)\(.\)\(.\)/\4\3\2\1/g'
(为了更改字节顺序,您可以使用 将十六进制转储转换为二进制数据xxd -r
,交换字节顺序,然后进行十六进制转储。但这不会交换一个字节中的两个十六进制数字,我认为 xxd 不支持。)