複数の列に基づくUnixのソート

複数の列に基づくUnixのソート

Unixのソートがわかりません。次のファイルを検討してください(タブで区切られています)。

aa  ~ a1
aa  B
b   A
b   ~ e
bb  B
bb  ~ B

電話をかけるとき:

cat tmp2 | sort -t $'\t' -k1,2

わかりました。

aa  ~ a1
aa  B
b   A
bb  B
bb  ~ B
b   ~ e

私が理解しているように、-t $ '\ t'区切り文字をスペースの代わりにタブとして扱うことを意味し、-k1,2は最初の列に基づいてソートを意味し、2行の最初の列が同じ場合2番目の列に移動することを意味します。しかし、この場合、最後の「b」が4行目に出るべきではありませんか?

ベストアンサー1

いいえ、-k1,2最初のフィールドの先頭から始まり、2番目のフィールドの終わりで終わる行の部分を並べ替えることを意味します。

最初のフィールドを並べ替えてから2番目のフィールドを並べ替えるには、次の手順を実行します。

sort -k1,1 -k2,2

おすすめ記事