
新Linux入門|cutコマンドを使ってデータを部分抽出する方法
Linuxでテキストファイルを扱っているとき、「特定の列だけ見たい!」と思うことがありますよね。
たとえばCSVファイルから「名前とメールアドレス」だけを抜き出したい場合や、
システムファイルから「ユーザー名」だけを一覧にしたいときなどに便利なのが cutコマンド です。
cutコマンドを使うと、テキストファイルやコマンドの出力結果から
必要な部分(列・文字・バイト)だけを抽出 できます。
シェルスクリプトやデータ整理の場面で頻繁に登場する、基礎的かつ強力なコマンドです。

📘 cutコマンドの概要
cut は、テキストデータを「区切り文字」や「位置」で分割し、
指定した部分だけを切り出して表示するコマンドです。
たとえば、カンマ区切りのファイルから特定の列を取り出したり、
システムのユーザー情報を抽出するのに使えます。
📘 コマンド書式
cut [オプション] ファイル名📗 例
[suzuki@AlmaLinux ~]$ cut -d',' -f2,3 sample.csvこの例では、sample.csv の「2列目と3列目」をカンマ区切りで抽出します。
⚙️ 主なオプションと説明
| オプション | 説明 |
|---|---|
| -f | 抽出したいフィールド(列)を指定。番号は1から始まる。 |
| -d | 区切り文字を指定。デフォルトはタブ文字。 |
| -c | 指定した文字位置を抽出。例:-c 1-5 は1~5文字目を切り出す。 |
| -b | バイト単位で指定範囲を抽出。マルチバイト文字に注意。 |
💡 ポイント
- 区切り文字が「:(コロン)」や「,(カンマ)」などの場合は、必ず -d で指定します。
- -f と -d の組み合わせが、CSVやシステムファイルでよく使われます。
- 日本語などマルチバイト文字の場合は、-b ではなく -c を使う方が安全です。
🧪 使用例と出力解説
① 基本的な使用例(CSVファイルから特定列を抽出)
[suzuki@AlmaLinux ~]$ cat data.csv
ID,Name,Email
1,Suzuki,suzuki@example.com
2,Tanaka,tanaka@example.com
3,Yamamoto,yamamoto@example.com
[suzuki@AlmaLinux ~]$ cut -d',' -f2,3 data.csv
Name,Email
Suzuki,suzuki@example.com
Tanaka,tanaka@example.com
Yamamoto,yamamoto@example.com💬 区切り文字を「 , 」に指定し、2列目と3列目だけを抽出しています。
② バイト単位で抽出する(-b)
[suzuki@AlmaLinux ~]$ echo "ABCDEFGHIJ" | cut -b 1-5
ABCDE💬 この例では、最初の5バイト(A〜E)だけを抽出しています。
英数字のような1バイト文字なら問題ありませんが、日本語文字列には不向きです。
③ 文字単位で抽出する(-c)
[suzuki@AlmaLinux ~]$ echo "りんごバナナ" | cut -c 1-3
りんご💬 -c は「文字単位」で抽出するため、マルチバイト文字(日本語)でも崩れません。
④ /etc/passwd からユーザー名を一覧表示
/etc/passwd ファイルは、システム上のユーザー情報を次のようにコロン( : )で区切って保存しています。
ユーザー名:パスワード:UID:GID:コメント:ホームディレクトリ:ログインシェルたとえば内容の一部は次のようになっています。
[suzuki@AlmaLinux ~]$ head -5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
suzuki:x:1000:1000::/home/suzuki:/bin/bash
watanabe:x:1001:1001::/home/watanabe:/bin/bashここからユーザー名だけを抽出するには
[suzuki@AlmaLinux ~]$ cut -d: -f1 /etc/passwd
root
bin
daemon
suzuki
watanabe💬 区切り文字「 : 」を指定し、1列目(ユーザー名)だけを表示しています。
シンプルで非常に実用的な使い方です。
⑤ /etc/group からグループ名を抽出
/etc/group も同じようにコロンで区切られています。
[suzuki@AlmaLinux ~]$ head -3 /etc/group
root:x:0:
bin:x:1:root,bin
wheel:x:10:root,suzuki
[suzuki@AlmaLinux ~]$ cut -d: -f1 /etc/group
root
bin
wheel💬 このようにして、グループ名(1列目)だけを簡単に取り出せます。
✅ まとめ
- cutコマンド は、テキストファイルの特定部分を切り出すためのコマンド。
- -d で区切り文字を指定し、-f で抽出したい列を指定できる。
- -c や -b を使えば、文字単位・バイト単位での切り出しも可能。
- /etc/passwd や /etc/group のようなシステムファイルにも応用できる。
💬 データ処理やスクリプト作成で頻繁に使う基本コマンドです。
ぜひ cut -d: -f1 /etc/passwd を実行して、ユーザー名一覧を抽出してみましょう!
