人に聞けない痔の悩み、これでスッキリ >>

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

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

このQ&Aに関連する最新のQ&A

A 回答 (1件)

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


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

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

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qgrepで検索文字列が完全一致した行だけ取り出す方法

grepの文字列検索で検索文字列が単語として、完全一致した行だけ取り出す方法はないでしょうか?

通常は
grep hoge hoge.txt

と打つと、hogeが含まれる行が出力されますが、今回は含まれる行ではなくて完全に文字列が一致した行だけ取り出したいのです。

例えばhoge.txtの中に
cc ghoge
kkl hogem
jjll hoge
という3行があったとしたら最後の行でhogeという文字が空白で区切られた行だけ取り出したいのです。

何かよい方法があれば教えてください

Aベストアンサー

-w オプションじゃだめですか?

参考URL:http://www.linux.or.jp/JM/html/GNU_grep/man1/grep.1.html

Qsedなどで、特定の文字列の後の文字列を抽出したい

sedなどで、特定の文字列の後の文字列を抽出したい

シェルスクリプト内で、sedなどを使って特定の文字列の後の文字列を抽出したいのですが、どうすればいいでしょうか?

たとえば、abcXYZ123defghiのなかから、XYZの後の「123」を抜き出したいです。

echo abcXYZ123defghi | sed ...

のようにして実行させたいです。

Aベストアンサー

日本語対応sedだと日本語数字混じりでもできますね。

echo abcXYZ12357defghi | sed -e 's/^.*XYZ\([0-90-9]*\).*$/\1/' -e 'y/0123456789/0123456789/'
12357

※ 使っている日本語コードの指定は必要かも(例えば、 --ctype=EUC)

echo abcXYZ12357defghi | sed -e 's/^.*XYZ\([0-90-9]*\).*$/\1/'
12357

※ 入力フォームに書いている時はASCIIと日本語の判別がし易いけど回答見るとわかり難いですね。後ろの例での結果57とy/0123456789/の数字部分が日本語です。


人気Q&Aランキング