Gnu ソート -k2 と -k2,2 の違い

Gnu ソート -k2 と -k2,2 の違い
less file.txt

01 Joe x
02 Marie y
03 Albert p
04 Dave k

列 2 で並べ替えたいのですが、次のコマンドは両方とも同じ出力になります。-k2 と -k2,2 の違いがわかると嬉しいです。

less file.txt | sort -k2そしてless file.txt | sort -k2,2

出力:

03 Albert p
04 Dave k
01 Joe x
02 Marie y

答え1

カンマの後の指定はstop position(デフォルトはend of the line)を定義します。

man 1 sort:

-k--key=KEYDEFキーでソートします。KEYDEFは場所とタイプを指定します

KEYDEF はF[.C][OPTS][,F[.C][OPTS]]開始位置と停止位置を表します。ここで、F はフィールド番号、C はフィールド内の文字位置です。どちらも起点は 1 で、停止位置はデフォルトで行の末尾になります。


たとえば、次の入力を考えますfile.txt

03 Albert p
04 Albert a
  • を使ってソートすると-k2Albert a前に置かれますAlbert p
  • を使用すると-k2,2、ソート時に3番目のキーは無視されます。

または別の例:

03 Albert p
04 Aave k

次のようにして、2 番目のキーの最初の文字で並べ替えることができます-k2,2.2

$ sort -k2,2.2 file.txt
03 Albert p
04 Aave k
  • 使用された場合-k2Aa前にソートされますAl

関連情報