たとえば、長さが異なる16進数のファイルがある場合
1F
b
c
コマンドラインからそれらをソートするにはどうすればよいですか?
Linux ソリューションは大歓迎ですが、Windows と cygwin または gnuwin32 を使用します。
注:私は明らかに間違っている順序でそれらを保持する SORT 'cos を使用できません。
たとえば、長さが異なる16進数のファイルがある場合
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}'
これにより、16 進数の元の大文字/小文字が保持されます。
試してみてくださいsort -n filename
。マニュアルページの-n
「文字列数値による比較」によるフラグ。
更新: @barlop が指摘したように、この-n
オプションは 16 進数では機能しません。
awk スクリプトを使用して、文字列を固定長になるまで左詰めするファイルを作成し、結果のファイルを並べ替えてから、結果の先頭のスペースを取り除くことができます。
awk を使用してからしばらく経ちましたが、思い出すと右寄せで出力することは難しくありませんでした。