回答:
これを試してみてください:
sort -s -n -k 1,1
-s
指定されたキーの一部ではありませんでしたすべてのものに区分する区分無効「最後の手段」、。
-k 1
実際に「このフィールドを、次のすべて」を意味しますが、2列目のソートしようとした場合、あなたが見ることができるように、数値のソートのコンテキストではありません。残りの行に移動することで、関係が壊れているのを単に見ているだけです。ただし、一般的には、フィールド1 のみで-k 1,1
ソートするように指定する必要があります。
join
は、参加しているフィールドで入力をソートすることです。確かに、この出力は最初のフィールドでソートされており、あなたはそれに参加できます。
-k 1,1
(「1」の部分)私のために任意のより良い動作しません。必要な場合は-s -k 1
、何が機能し-n
ますか?
提供された答えはどれも私にとっては一般的に機能しません。
両方でsort -s -k 2 file1
、sort -n -k1,1
このファイルで追加のソートを実行します。
# cat file1
3 3 5
3 2 3
1 4 7
0 1 2
3 2 1
私はこの正確なことをしなければならず、シェルループを使用することになりました。このソリューションは、ソートされた列の一意の値ごとにファイル全体を読み取る必要があるため、非常に大きなファイルではうまく機能しない場合があります。
ここでは、ファイルは列2のみでソートされます。
# awk '{print $2}' file1 | sort | uniq | while read index
do
awk -v var=$index '$2 == var { print $0}' file1
done
0 1 2
3 2 3
3 2 1
3 3 5
1 4 7
sort -s -k2,2 file1