如果我有一个不同长度的十六进制数文件,例如
1F
b
c
如何从命令行对它们进行排序?
欢迎使用Linux解决方案,不过我将使用windows和cygwin或gnuwin32。
注意:我显然不能使用SORT'cos来保持它们的顺序是错误的。
答案 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已经有一段时间了,但我记得输出正确的东西并不困难。