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
- を使ってソートすると
-k2
、Albert 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
- 使用された場合
-k2
、Aa
前にソートされますAl