Bash でファイルの 2 列目に基づいてデータを並べ替える

Nilesh Katuwal 2023年10月8日
  1. Bash の sort コマンドの概要
  2. Bash でファイルの 2 列目に基づいてデータを並べ替える
Bash でファイルの 2 列目に基づいてデータを並べ替える

この記事では、bash でファイルの 2 番目の列に基づいてデータを並べ替える方法について説明します。

Bash の sort コマンドの概要

ファイルは、特定の順序でレコードを配置する sort コマンドを使用してソートされます。 デフォルトでは、sort コマンドは、ASCII データが含まれていると仮定してファイルをソートします。

数値ソートは、sort コマンドで利用できるもう 1つのオプションです。 sort コマンドには次の機能が含まれています。

  1. 数字で始まる行は、文字で始まる行よりも前に表示されます。
  2. アルファベット順で後の文字で始まる行は、前の文字で始まる行の後に続きます。
  3. 大文字で始まる行は、同じ小文字で始まる行よりも前に表示されます。

filename.csv という名前のデータ ファイルを作成するとします。 cat コマンドを使用して bash でそのファイルを開きます。

Bash でファイルを開く構文:

$ cat filename.csv

大文字と小文字が混在するファイルを並べ替える:

大文字と小文字が混在するファイルでは、大文字が最初にソートされ、次に小文字がソートされます。

並べ替えには、次のような多数の選択肢があります。

  • -k - このオプションは、指定された列に基づいてデータをソートするのに役立ちます。 たとえば、引数 -k5 は、各行の 5 番目の文字ではなく、各行の 5 番目のフィールドからソートを開始します (ここでの列はカンマ区切りのフィールドとして定義されていることに注意してください)。

  • -n - このオプションは、数値の sort を指定します。これは、列をテキストではなく数字の行として読み取る必要があることを意味します。

  • -r - -r オプションでソート順を逆にします。 別の書き方は -reverse.

  • -i - このオプションは、印刷できない文字を無視します。 別の書き方は -ignore-nonprinting です。

  • -b - このオプションは、行数が空白を使用して計算されるため、先頭の空白を考慮しません。 別の書き方は ignore-leading-blanks です。

  • -f - このオプションは、大文字の使用を無視します, A==a. 別の書き方は ignore-case です。 このオプションにより、前処理でスペース以外の演算子が使用されます: -t [新しいセパレーター]

    別の書き方は -field-separator です。

Bash でファイルの 2 列目に基づいてデータを並べ替える

-k オプションを使用すると、sort により、列ごとにファイルを sort できます。 複数の列を持つファイルを作成することから始めましょう。 並べ替えでは、各列を区切るために 1つのスペースが使用されます。

たとえば、2 番目の列で -k 2 を使用して sort します。 filename.csv という名前のファイルが既に作成されています。 そのファイルで利用可能なデータを以下に示します。

Bonie,22
Julie,23
Henry,15
Flamingo,34
Peter,11

cat コマンドを使用して、並べ替える前にファイル内のアイテムを表示します。

$ cat filename.csv

出力:

Bonie,22
Julie,23
Henry,15
Flamingo,34
Peter,11

Bash でファイルの 2 番目の列に基づいてデータを並べ替える構文:

sort -k2 -n filename.csv

2 番目の列を並べ替えた後の出力:

Bonie,22
Flamingo,34
Henry,15
Julie,23
Peter,11