4

次のように、3つのフィールドからなる非常に単純なテキストファイルがあり、それぞれがスペースで区切られています。

123 15 0
123 14 0
345 12 0
345 11 0

そして、最初の列で並べ替える並べ替えコマンドを発行しましたsort -k 1 myfile。ただし、最初の列だけでソートするわけではありません。行全体で並べ替えると、次の結果が得られます。

123 14 0
123 15 0
345 11 0
345 12 0

コマンドまたはファイルに何か問題がありますか?

4

1 に答える 1

6

以下を使用する必要があります。

sort -k 1,1 -s myfile

最初のフィールドのみを並べ替えたい場合。この構文は、ソートの開始フィールドと終了フィールドを指定します。sort -k 1最初のフィールドから行末までソートすることを意味します。ソートキーが同じ入力に対して行が同じ順序に保たれるようにするには、-sフラグ (GNU) を使用して安定したソートを使用する必要があります。

sort(1)マニュアルページからこれを参照してください:

KEYDEF is F[.C][OPTS][,F[.C][OPTS]] for start and stop position, where
F is a field number and C a character position in the field; both are
origin 1, and the stop position defaults to the line's end.

および情報ページ:

The --stable (-s) option disables this last-resort comparison so that
lines in which all fields compare equal are left in their original relative
order.
于 2012-12-13T20:47:42.353 に答える