0

SORT コマンドを使用して、5 番目の列に基づいて表形式のファイルを並べ替えたいのですが、3 番目の列にいくつかの値がありません。また、-k5,5 では sort コマンドが正しく動作しないことに気付きましたが、-k1,1 または -k2,2 では問題ありません。欠損値が原因ですか?

4

2 に答える 2

5

デフォルトでsortは、空白文字の後に空白文字以外の文字が続く場合は常にフィールドが始まると考えられます。たとえば、このスニペットでは:

a     b     c     d
e           f     g

最初の行には 4 つのフィールドがあり、2 番目の行には 3 つのフィールドがあります。

別のセパレータを使用する場合は、オプションを使用して指定でき-tます。たとえば、タブをセパレータとして使用するには、次のように記述できます。

sort -t $'\t' -k 5,5

これsortにより、空のフィールドを検出できます (2 つの連続したタブは、間に空のフィールドがある 2 つの異なる区切り記号として解釈されるため)。

于 2013-01-11T21:53:02.983 に答える
0

列が欠落している場合は、データが固定形式であると推測されます。つまり、次のようにテキストが整列されています。

1  2       3
2 23   12345

またはこれ

1  2   3
2  23  12345

これよりも

1 2 3
2 23 12345

それが本当なら、入力に実際には表示されないタブ文字を使用して、-t/ -k1.20列 20 から始まる文字でソートするようなキーで現在の単一フィールドをソートできます。

于 2013-01-11T21:57:34.497 に答える