dポイントプレゼントキャンペーン実施中!

Linux上で16進数のデータをソートしたいのですがどうすれば実現できるでしょうか?

[test.txt]

11009
292f
6551
e6f6

↓のようにソートしたい

292f
6551
e6f6
11009

手順はまず、16進数→10進数に変換してからソートでしょうか?

もしそうだとしても10進数に変換するところでつまずいています。
awkのprintfでやると下記のようにエラーがでます。
(頭に0xを追加して試してもダメでした)

$ awk '{printf (%d, $1)}' test.txt

awk: {printf (%d, $1)}
awk: ^ syntax error
awk: {printf (%d, $1)}
awk: ^ syntax error
↓これだと変換できるのは知っているのですが・・・。

$ printf "%d\n" 0x292f
10543

以上、よろしくお願いします。

A 回答 (1件)

桁が大きすぎると正しくない


先頭にスペースなどが入ると正しくない
けど

perl -e '@l=<>;print sort {hex($a)<=>hex($b)} @l' < test.txt
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!