sortコマンドのオプション-t -n -kはどう動くか

sortコマンドのオプション-t、-n、-kを組み合わせた時、どのような結果が得られるかを調査した。
試したコマンドは以下。-tの有り無しで確認、nオプションはグローバル時とローカル時確認、ローカル時はソートキーの開始位置に付した場合と終了位置に付した場合で確認した。

1① sort -t , -k 1n,3 eee.csv    # -t有り、nはローカルオプションで開始位置に付した場合
2② sort -t , -k 1,3n eee.csv    # -t有り、nはローカルオプションで終了位置に付した場合
3③ sort -k 1n,3 eee.csv         # -t無し、nはローカルオプションで開始位置に付した場合
4④ sort -k 1,3n eee.csv         # -t無し、nはローカルオプションで終了位置に付した場合
5⑤ sort -t , -n -k 1,3 eee.csv  # -t有り、nはグローバルオプションの場合
6⑥ sort -n -k 1,3 eee.csv       # -t無し、nはグローバルオプションの場合

◆結論
下方に実行結果を載せるが、先に結論を示す。以下の動きになっているようだ。
1.n オプションはグローバルオプション(-n)でもローカルオプション(-k 1,3nなど)でも、いずれもソートキーの開始位置のみに効く。-k 1,3n のように終了位置に n オプションを付しても終了位置でソートされない。
2.-t が付いていると、ソートキーの開始位置のみに効く。
3.-t が付いていないと、ソートキーの開始位置から終了位置までの数値文字列を結合後に数値とみなしてソート実行する。

◆実行結果
まず使用したCSVファイル(eee.csv)の内容を示す。

1$ cat eee.csv
2123,83,4892
39875,238,43
458,3,9238
545,92847,244
6741,47,9483
71657,238,248

以下が実行結果。

 1# ①
 2$ sort -t , -k 1n,3 eee.csv
 345,92847,244
 458,3,9238
 5123,83,4892
 6741,47,9483
 71657,238,248
 89875,238,43
 9
10$ sort -t , -k 1,3n eee.csv
11# ②
1245,92847,244
1358,3,9238
14123,83,4892
15741,47,9483
161657,238,248
179875,238,43
18
19$ sort -k 1n,3 eee.csv
20# ③ 
2158,3,9238
22123,83,4892
23741,47,9483
249875,238,43
251657,238,248
2645,92847,244
27
28$ sort -k 1,3n eee.csv
29# ④ 
3058,3,9238
31123,83,4892
32741,47,9483
339875,238,43
341657,238,248
3545,92847,244
36
37$ sort -t , -n -k 1,3 eee.csv
38# ⑤ 
3945,92847,244
4058,3,9238
41123,83,4892
42741,47,9483
431657,238,248
449875,238,43
45
46$ sort -n -k 1,3 eee.csv
47# ⑥ 
4858,3,9238
49123,83,4892
50741,47,9483
519875,238,43
521657,238,248
5345,92847,244

◆参考
http://itdoc.hitachi.co.jp/manuals/3021/3021313320/JPAS0337.HTM

関連ページ