如果我有一个不同长度的十六进制数字文件,例如
1F
b
c
如何从命令行对它们进行排序?
欢迎使用 Linux 解决方案,但我将使用 windows 和 cygwin 或 gnuwin32。
注意:我显然不能使用 SORT 'cos 会使它们保持错误的顺序。
如果我有一个不同长度的十六进制数字文件,例如
1F
b
c
如何从命令行对它们进行排序?
欢迎使用 Linux 解决方案,但我将使用 windows 和 cygwin 或 gnuwin32。
注意:我显然不能使用 SORT 'cos 会使它们保持错误的顺序。
cat thefile | while read line; do printf "%d %s\n" "0x$line" "$line"; done | sort -n | awk '{print $2}'
这保留了十六进制数字的原始大写/小写。
试试sort -n filename
。手册页中的-n
标志“根据字符串数值比较”。
更新:正如@barlop 所指出的,该-n
选项不适用于十六进制数字。
您可以使用 awk 脚本创建一个文件,将字符串左侧填充为固定长度,对结果文件进行排序,然后去除结果中的前导空格。
自从我使用 awk 以来已经有一段时间了,但我记得输出正确对齐的东西并不难。