Bash 速習チュートリアル

Bash cutコマンド

1. cutコマンドの使用方法

cutコマンドは、ファイルの各行から特定の部分を取り除く(または抽出する)ために使用されます。
ファイルや出力ストリームから、特定のデータフィールドを抽出する際に非常に便利なツールです。

以下のすべての例では、次の example_data.txt ファイルを使用します。
(※各フィールドはタブで区切られています)

Kai 	Refsnes	30,Norway
Robin	Smith	25,Denmark
Sienna	Davis	40,Germany

1.1 基本的な使い方

ファイルの最初のフィールドを抽出するには、cut -f1 ファイル名 を使用します。

例:最初のフィールドを抽出する

cut -f1 example_data.txt
# 出力結果:
# Kai
# Robin
# Sienna

デフォルトでは、cutタブ(Tab)をデリミタ(区切り文字)として使用します。

2. オプション

cutコマンドには、動作を変更するためのいくつかのオプションがあります。

  • -d - フィールドを区切る文字(デリミタ)を指定する
  • -f - 表示する特定のフィールドを選択する
  • --complement - 選択したフィールド以外のすべてのフィールドを表示する

2.1 デリミタ(区切り文字)の指定

-dオプションを使用すると、フィールドを区切っている文字を任意に選択できます。

例:デリミタを指定する
(カンマをデリミタとして指定し、最初のフィールドを抽出)

cut -d',' -f1 example_data.txt
# 出力結果:
# Kai     Refsnes 30
# Robin   Smith   25
# Sienna  Davis   40

2.2 特定のフィールドを選択

-fオプションを使用すると、表示したい特定のフィールド(または範囲)を選択できます。

例:特定のフィールドを選択
(1番目から2番目のフィールドを抽出)

cut -f1-2 example_data.txt
# 出力結果:
# Kai     Refsnes
# Robin   Smith
# Sienna  Davis

2.3 補集合(Complement)の表示

--complementオプションを使用すると、選択したフィールドを除いた残りのすべてのフィールドを表示できます。

例:補集合を表示
(1番目のフィールド以外を表示)

cut --complement -f1 example_data.txt
# 出力結果:
# Refsnes 30,Norway
# Smith   25,Denmark
# Davis   40,Germany

3. 高度なフィールド抽出

cutを使用すると、より複雑なフィールド抽出も可能です。
例えば、cut -f2-3 example_data.txt は、ファイルから2番目から3番目のフィールドを抽出します。

例:高度なフィールド抽出

cut -f2-3 example_data.txt
# 出力結果:
# Refsnes 30,Norway
# Smith   25,Denmark
# Davis   40,Germany

4. よくあるエラーとトラブルシューティング

cutを使用する際、以下のようなエラーに遭遇することがあります。

  • "cut: delimiter must be a single character" (デリミタは1文字である必要があります) デリミタが正しく指定されているか確認してください。2文字以上の文字列をデリミタにすることはできません。
  • "cut: fields and positions are numbered from 1" (フィールドと位置の番号は1から始まります) フィールドの指定に「0」を使っていないか確認してください。cutのカウントは常に1から始まります。

デバッグのヒント:
意図した結果が得られない場合は、デリミタの設定やフィールド番号がファイルの実際のフォーマットと一致しているか、改めて確認してみるのが一番の近道です。