ソートキーが列の2番目の文字から始まり、2番目の列の数字であるファイルをソートしたいと思います。たとえば、
4 31
5 a14
2 h11
1 x4
2 z3
希望の出力は次のとおりです。
4 31
2 z3
1 x4
2 h11
5 a14
これはsort -k
可能なアプローチのように見えますが、予想ほどうまく機能しません。
k, --key=KEYDEF
キーでソートすると、場所とタイプが提供されます。
KEYDEF は開始位置と停止位置を表す F[.C][OPTS][,F[.C][OPTS]] です。ここで、Fはフィールド番号、Cはフィールドの文字位置です。どちらも原点1で、停止位置はデフォルトで行末に設定されます。 -t と -b の両方が有効でない場合、フィールドの文字は前のスペースの先頭から計算されます。 OPTSは、このキーのグローバルソートオプションをオーバーライドする1つ以上の単一文字ソートオプション[bdfgiMhnRrV]です。キーが指定されていない場合は、行全体がキーとして使用されます。
私はこれを試みます:
sort -k 2.2V file
4 31
5 a14
2 h11
1 x4
2 z3
これを正しい方法で行う方法は?
答え1
次の問題が発生しました。
フィールドの文字は、前のスペースの先頭から計算されます。
sort -k 2.3V file
希望の結果を得ることができます。フィールドを区切るスペースは、2番目のフィールドの最初の文字です。
または、b
先行スペースを無視するオプションを追加できます。
sort -k 2.2bV file
これにより、フィールドの前にスペースがあってもキー定義を使用できます。