並べ替えの使用に関する問題[重複]

並べ替えの使用に関する問題[重複]

次のファイルがあります。

Y10 122.894054 7.653405
B3 124.406526 8.281803
B3' 125.000684 8.389677
A11 102.801917 9.288624
A11' 127.661564 8.216719
D4 117.182791 7.418388

次のように、最初の列を数字でソートしたいと思います。

B3 124.406526 8.281803
B3' 125.000684 8.389677
D4 117.182791 7.418388
Y10 122.894054 7.653405
A11 102.801917 9.288624
A11' 127.661564 8.216719

このコマンドを使用しますが、機能しません。

sort -k1,23 -k1n junk

ベストアンサー1

最初の数字の前に一意の区切り文字(「#」など)を一時的に追加します。

sed 's/^\([^0-9]*\)/\1#/' junk | sort -t '#' -k 2n,2 | tr -d '#'

これは一般的なケースで、最初の数字の前に「#」が含まれていないテキストファイルの最初の数字をソートします。

必要に応じて、よりクールな区切り文字を使用することもできます。

SEP=`printf '\02'`
sed "s/^\([^0-9]*\)/\1$SEP/" junk | sort -t "$SEP" -k 2n,2 | tr -d "$SEP" 

おすすめ記事