sortコマンドを使用して「|」(パイプ文字)で区切られたデータを処理する方法は?
2つのフィールドを持つ「x」という名前のサンプルファイルを考えてみましょう。
axis-AXIS|OK
axis-AXISR|OK
axis-AXISD2X|OK
axis-AXISA|OK
axis-AXISD1|OK
axis-AXIS1RX|OK
axis-AXISR1M|OK
axis-AXISD2|FALSE
axis-AXISMD|FALSE
axis-AXISM|FALSE
axis-AXISE|OK
axis-AXISD|OK
私のロケール:
echo $LC_ALL
C
ソートされると、文字「|」は奇妙な分類を生成する鍵の一部であるようです。
sort -t"|" x
axis-AXIS1RX|OK
axis-AXISA|OK
axis-AXISD1|OK
axis-AXISD2X|OK
axis-AXISD2|FALSE
axis-AXISD|OK
axis-AXISE|OK
axis-AXISMD|FALSE
axis-AXISM|FALSE
axis-AXISR1M|OK
axis-AXISR|OK
axis-AXIS|OK
指定されたフィールドキーsort -t"|" -k1 x
には変更はありません。
答え1
終了フィールド番号がない場合は、-k
1 から始まるすべてのフィールドを考慮します。あなたが必要とする:
sort -k1,1 -t'|' file.txt
テスト:
$ sort -k1,1 -t'|' file.txt
axis-AXIS|OK
axis-AXIS1RX|OK
axis-AXISA|OK
axis-AXISD|OK
axis-AXISD1|OK
axis-AXISD2|FALSE
axis-AXISD2X|OK
axis-AXISE|OK
axis-AXISM|FALSE
axis-AXISMD|FALSE
axis-AXISR|OK
axis-AXISR1M|OK
locale
そうでない場合は、C
すぐに設定できます。
LC_ALL=C sort -k1,1 -t'|' file.txt