3

如果我有一个不同长度的十六进制数字文件,例如

1F
b
c

如何从命令行对它们进行排序?

欢迎使用 Linux 解决方案,但我将使用 windows 和 cygwin 或 gnuwin32。

注意:我显然不能使用 SORT 'cos 会使它们保持错误的顺序。

4

3 回答 3

6
cat thefile | while read line; do printf "%d %s\n" "0x$line" "$line"; done | sort -n | awk '{print $2}'

这保留了十六进制数字的原始大写/小写。

于 2011-02-16T18:47:13.580 回答
0

试试sort -n filename。手册页中的-n标志“根据字符串数值比较”。

更新:正如@barlop 所指出的,该-n选项不适用于十六进制数字。

于 2011-02-16T18:46:20.887 回答
0

您可以使用 awk 脚本创建一个文件,将字符串左侧填充为固定长度,对结果文件进行排序,然后去除结果中的前导空格。

自从我使用 awk 以来已经有一段时间了,但我记得输出正确对齐的东西并不难。

于 2011-02-16T18:49:37.980 回答