从命令行排序不同长度的十六进制数?

时间:2011-02-16 18:39:44

标签: windows linux command-line cygwin gnuwin32

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

1F
b
c

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

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

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

3 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:0)

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

更新:正如@barlop指出的那样,-n选项对十六进制数不起作用。

答案 2 :(得分:0)

您可以使用awk脚本创建一个文件,该文件将字符串左键填充到固定长度,对生成的文件进行排序,然后在结果上删除前导空格。

我使用awk已经有一段时间了,但我记得输出正确的东西并不困难。