ソートと通信の使用に関する問題

ソートと通信の使用に関する問題

私は2つの純粋なデータファイルの交差点を見つけようとしており、以前の投稿でこれを行うことができることを発見しました。

comm -12 <(sort test1.list) < (sort test2.list)

sort test1.listtest1.listを順番に並べることが目的のようです。sort動作を理解するために、sort次のファイルtest1.listを次のように試しました。sort test1.list > test2.list

100
-200
300
2
92
15
340

しかしtest2.listは

100
15
2
-200
300
340
92

このように並べ替えられたリストは、ソートがどのように機能するか、ソートと通信がどのように連携するかについて非常に混乱します。

ベストアンサー1

commマニュアルによると、「comm」を使用する前に、「LC_COLLATE」ロケールで指定された組み合わせ順序を使用して入力ファイルをソートする必要があります。

そしてsortマニュアル:「別段の言及がない限り、すべての比較は 'LC_COLLATE'ロケールで指定された文字の組み合わせ順序を使用します。

そこで、クイックテストにより、予想LC_COLLATE順序が基本順序(辞書ソート)によって提供されることcommが確認されました。sort

sortファイルはさまざまな方法でソートできます。

  • -d:辞書順 - スペースと英数字を除くすべての文字を無視します。
  • -g:一般数字 - 文字、負の数、正の数。
  • -h:人が読める - 負、アルファ、プラス。n < nk = nK < nM < nG
  • -n:Number - 負数、アルファ、正数です。k、などMG特別ではありません。
  • -V:バージョン - 正、大文字、小文字、負の数。1 < 1.2 < 1.10
  • -f:大文字と小文字を区別しません。
  • -R: Random - 入力をランダムに再生します。
  • -r:reverse - 通常、次のいずれかで使用されます。dghnV

もちろん、他のオプションもありますが、これはあなたが見たり必要とするかもしれません。

テストによると、デフォルトのソート順序は辞書-d順序である可能性があります。

  d   |   g   |   h   |   n   |   V 
------+-------+-------+-------+-------
  1   |  a    | -1G   | -10   |  1
 -1   |  A    | -1k   | -5    |  1G
  10  |  z    | -10   | -1    |  1g
 -10  |  Z    | -5    | -1g   |  1k
  1.10| -10   | -1    | -1G   |  1.2
  1.2 | -5    | -1g   | -1k   |  1.10
  1g  | -1    |  a    |  a    |  5
  1G  | -1g   |  A    |  A    |  10
 -1g  | -1G   |  z    |  z    |  A
 -1G  | -1k   |  Z    |  Z    |  Z
  1k  |  1    |  1    |  1    |  a
 -1k  |  1g   |  1g   |  1g   |  z
  5   |  1G   |  1.10 |  1G   | -1
 -5   |  1k   |  1.2  |  1k   | -1G
  a   |  1.10 |  5    |  1.10 | -1g
  A   |  1.2  |  10   |  1.2  | -1k
  z   |  5    |  1k   |  5    | -5
  Z   |  10   |  1G   |  10   | -10

おすすめ記事