こんにちは、みっちゃんです。

Linux環境でログファイルやTSV・CSVデータなどのテキストファイルを扱っている際、「特定の列(カラム)だけを取り出したい」「不要な1列目を削除して出力したい」と思ったことはありませんか?

そんな時に役立つのがLinuxの標準コマンドである「cut(カット)」です。

cutコマンドは、ハサミで紙の特定の列をチョキッと切り取るように、データから指定したフィールドや列だけを簡単に抽出・除去できる超便利コマンドです。

本記事では、cutコマンドの基本構文から、タブ・カンマ区切りファイルの処理方法、リダイレクトを使ったファイル保存、さらに実務で使える応用テクニックまで分かりやすく解説します!

1. Linuxのcutコマンドとは?【基本概念とできること】

cutコマンドは、テキストファイルや標準入力の各行から、指定した「区切り文字(デリミタ)」や「文字数・バイト数」に基づいて、特定の列(フィールド)を切り出すためのコマンドです。

例えば、表計算ソフト(Excelなど)で「特定のA列だけを削除してB〜E列だけを残す」ような作業を、シェルスクリプトやコマンドライン上で一瞬にして実行することができます。

  • タブ区切りデータ(TSV):不要な列を除外して必要なカラムだけ抽出
  • カンマ区切りデータ(CSV):特定の項目(ID、名前、メールアドレス等)の抜き出し
  • システムログ:タイムスタンプやエラーレベルなどの特定フィールドの抽出

2. cutコマンドの基本構文と主要オプション一覧

cutコマンドの基本的な使用構文は以下の通りです。

$ cut [オプション] [ファイル名]

主に使われる重要なオプションをまとめました。

オプション 説明・役割 実行例
-d(--delimiter) 区切り文字(デリミタ)を指定します。
※未指定の場合は「タブ区切り」がデフォルト。
-d ','(カンマ区切り)
-d $'\t'(タブ区切り)
-f(--fields) 抽出表示したい列番号(フィールド)を指定します。 -f 2(2列目のみ)
-f 2-5(2〜5列目)
-f 1,3(1列目と3列目)
-c(--characters) 指定した「文字位置」で切り出します。 -c 1-10(1〜10文字目を抽出)

3. テキストファイルの指定した列を削除・抽出する具体的な手順

実際のファイルを使って、任意の列を「削除(特定列以外を表示)」する操作手順を見ていきましょう。

タブ区切り(TSV)ファイルの場合

以下のような「2行×5列」のタブ区切りテキストファイル(test.txt)があるとします。

1	2	3	4	5
6	7	8	9	10

このファイルから「1列目を削除」したい場合、言い換えると「2列目から5列目までを残して表示する」には、以下のようにコマンドを実行します。

$ cut -d $'\t' -f 2-5 test.txt

※BashやZshなどのシェル環境では、タブ文字を確実に指定するために $'\t' という特殊表現を用いるのが一般的です(単に -f 2-5 のみでもデフォルトがタブのため動作します)。

また、カンマ区切りで列番号を指定することも可能です。

$ cut -d $'\t' -f 2,3,4,5 test.txt
2	3	4	5
7	8	9	10

見事に1列目(1と6)が削除され、2〜5列目の情報だけが画面に出力されました。

カンマ区切り(CSV)ファイルの場合

CSVファイル(カンマ区切り)を処理する場合は、-d オプションにカンマ ',' を指定します。

$ cut -d ',' -f 2,4 data.csv

これにより、data.csv から2列目と4列目のデータだけを抜き出すことができます。

4. 処理結果を別ファイルへ保存する方法(リダイレクトの活用)

cutコマンドを実行しただけでは画面に結果が表示されるだけで、元のファイル自体は書き換えられません。

抽出・削除した結果を新しいファイルとして保存したい場合は、シェル機能の「リダイレクト(>)」を使用します。

$ cut -d $'\t' -f 2,3,4,5 test.txt > extracted_file.txt

保存されたファイルの中身を cat コマンドで確認してみましょう。

$ cat extracted_file.txt 
2	3	4	5
7	8	9	10

正しく1列目が除去された状態で、extracted_file.txt へ保存されていることが確認できます。

※リダイレクトやパイプ(|)の基本的な使い方については、こちらの記事(リダイレクションとパイプの基礎解説)で詳しく解説しています。

5. 実務で役立つ応用テクニック(文字数切り出し・awkとの違い)

日常のサーバー運用の場面で役立つちょっとした応用知識を紹介します。

文字数指定で切り出す(-c オプション)

区切り文字ではなく「各行の先頭から◯文字目だけを取り出したい」場合は -c オプションを使います。

# 各行の1文字目〜5文字目を抽出
$ cut -c 1-5 log.txt

ログの日時表記(例:2026-09-25)から「年・月」の部分だけを短縮して抜き出す際などに便利です。

cutコマンドとawkコマンドの違いと使い分け

Linuxで列を処理するコマンドとしては awk も有名です。両者の違いを押さえておきましょう。

  • cutコマンド:単純な列抽出や切り出しに特化。処理速度が速く、構文がシンプルで扱いやすい。
  • awkコマンド:条件分岐や計算、複雑な整形が可能な高機能スクリプト言語。複数スペース区切りのデータ処理が得意。

「単純にCSV/TSVの特定の列を削除・抽出したい」だけであれば、軽快に動作する cut コマンド を選択するのがベストです。

6. まとめ

今回は、Linuxでファイルの特定列を削除・抽出する cut コマンド について解説しました。

  • 区切り文字指定: -d オプション(タブ:$'\t'、カンマ:',')
  • 列番号指定: -f オプション(例:-f 2-5、-f 1,3)
  • ファイル保存: リダイレクト > を活用

テキストデータの加工やログ解析業務を大幅に効率化できるコマンドですので、ぜひマスターして日々のシェル操作に役立ててください!

関連記事

コマンドを使いこなすための機能を紹介【リダイレクションとパイプ】