如果我有一個不同長度的十六進制數字的文件,例如從命令行排序不同長度的十六進制數字?
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以來已經有一段時間了,但正如我所記得的那樣,輸出正確的東西並不困難。
失敗,出現$ echo -e'1FFF \ nF000 \ nc'| sort -n'cos舉例說,具有更多F的那個被排序爲-n。也許它只是將行上的每個字符轉換爲ASCII碼並添加它們。沒有考慮到他們的立場。 – barlop 2011-02-16 19:11:52
你說得對。我應該仔細檢查一下...... – mohit6up 2011-02-16 19:32:47