cutコマンドの使い方|区切り文字でフィールドを抽出する方法コマンド

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxコマンド, LinuxコマンドA-E, テキスト処理コマンド > cutコマンドの使い方|区切り文字でフィールドを抽出する方法コマンド
「CSVの特定の列だけ取り出したい」「/etc/passwdからユーザー名だけ抜き出したい」
こうしたテキスト処理で手軽に使えるのが、cutコマンドです。

この記事では、cutコマンドの基本的な使い方から区切り文字の指定、フィールド抽出、パイプとの組み合わせまで、実務で使える実践的な使い方を解説します。
【この記事でわかること】
・cut はテキストから特定のフィールドや文字位置を切り出すコマンド
・-d と -f で区切り文字とフィールド番号を指定するのが基本
・awk よりも軽量で、CSVや /etc/passwd の抽出に便利

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

cutコマンドとは?テキストから特定部分を切り出すコマンド

cutは、テキストデータの各行から指定した部分だけを切り出して表示するコマンドです。

区切り文字(デリミタ)で分割されたデータから特定のフィールド(列)を取り出したり、文字位置やバイト位置で範囲を指定して抽出したりできます。

awkほど高機能ではありませんが、構文がシンプルで覚えやすく、ちょっとした列の抽出であればcutのほうが手早く書けます。

cutコマンドの基本的な使い方

1. 区切り文字とフィールド番号で抽出する(-d, -f)

最もよく使うパターンです。-d で区切り文字を指定し、-f で何番目のフィールドを取り出すかを指定します。

# /etc/passwdからユーザー名(1番目のフィールド)を取り出す $ cut -d: -f1 /etc/passwd root bin daemon tanaka suzuki

/etc/passwd はコロン(:)区切りなので、-d: で区切り文字を指定しています。

2. 複数のフィールドを抽出する

フィールド番号はカンマで複数指定したり、ハイフンで範囲指定したりできます。

# 1番目と3番目のフィールドを取り出す $ cut -d: -f1,3 /etc/passwd root:0 bin:1 daemon:2 tanaka:1000 # 1番目から3番目までを取り出す $ cut -d: -f1-3 /etc/passwd root:x:0 bin:x:1 daemon:x:2 tanaka:x:1000 # 4番目以降を全て取り出す $ cut -d: -f4- /etc/passwd

3. 文字位置で抽出する(-cオプション)

区切り文字がない固定長データの場合は、-c オプションで文字位置を指定します。

# 1文字目から10文字目までを抽出する $ cut -c1-10 /var/log/messages Mar 17 10: Mar 17 10: Mar 17 10: # 5文字目だけを抽出する $ echo "ABCDEFG" | cut -c5 E # 3文字目以降を全て抽出する $ echo "ABCDEFG" | cut -c3- CDEFG

4. バイト位置で抽出する(-bオプション)

-b オプションはバイト位置で指定します。英数字(1バイト文字)のみの場合は -c と同じ結果ですが、日本語などのマルチバイト文字が含まれる場合は結果が異なります。

# バイト位置で抽出する $ echo "ABCDEFG" | cut -b1-3 ABC

日本語を扱う場合は -c(文字単位)を使うほうが安全です。

実務で使えるcut活用テクニック

5. /etc/passwdからユーザー情報を抽出する

/etc/passwd のフィールド構成は次のとおりです。

・1: ユーザー名
・2: パスワード(通常はx)
・3: UID
・4: GID
・5: コメント(フルネーム等)
・6: ホームディレクトリ
・7: ログインシェル

# ユーザー名とホームディレクトリを取り出す $ cut -d: -f1,6 /etc/passwd root:/root tanaka:/home/tanaka # ユーザー名とログインシェルを取り出す $ cut -d: -f1,7 /etc/passwd root:/bin/bash bin:/sbin/nologin tanaka:/bin/bash

6. CSVファイルから特定列を取り出す

カンマ区切りのCSVファイルから特定の列を抽出するのも簡単です。

# CSVファイルの内容 $ cat sales.csv 日付,商品名,数量,金額 2026-03-15,ノートPC,2,200000 2026-03-16,モニター,5,150000 2026-03-17,キーボード,10,50000 # 商品名と金額(2列目と4列目)だけ取り出す $ cut -d, -f2,4 sales.csv 商品名,金額 ノートPC,200000 モニター,150000 キーボード,50000

※ フィールド内にカンマが含まれるCSV(例:"東京都,港区")はcutでは正しく処理できません。そのような場合はawkを使ってください。

7. パイプと組み合わせて使う

cutは他のコマンドの出力をパイプで受け取って処理するのが得意です。

# dfコマンドの出力からファイルシステム名と使用率を取り出す $ df -h | tr -s ' ' | cut -d' ' -f1,5 # envコマンドの出力から変数名だけを取り出す $ env | cut -d= -f1 # lastコマンドの出力からユーザー名だけを取り出す $ last | cut -d' ' -f1 | sort | uniq -c | sort -rn

8. cutとawkの使い分け

cutとawkは似た用途で使われますが、使い分けの基準があります。

cutを使う場面:単純にフィールドを取り出すだけで十分なとき。構文がシンプルで、パイプの中でさっと使える
awkを使う場面:条件で絞り込みたい、計算したい、複数の区切り文字がある、連続スペースを1つの区切りとして扱いたいとき

大きな違いの1つが、連続スペースの扱いです。awkは連続スペースを1つの区切りとして扱いますが、cutはスペース1つ1つを区切りとして扱います。

# psの出力は列の間に複数スペースがある $ ps aux | head -2 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 169236 13296 ? Ss Mar16 0:03 /usr/lib/systemd/systemd # cutだとスペースが1つずつ区切りになるため、意図通りに取れない $ ps aux | cut -d' ' -f1 USER root # awkなら連続スペースも正しく処理できる $ ps aux | awk '{print $1, $11}' USER COMMAND root /usr/lib/systemd/systemd

psやdfなどスペースで整列された出力にはawkを、コロンやカンマなど明確な区切り文字があるデータにはcutを使うのが使い分けのコツです。

cutコマンドのトラブルシュートとよくあるミス

区切り文字がタブの場合の注意点

cutのデフォルトの区切り文字はタブです。-d を省略した場合はタブ区切りとして処理されます。

タブ区切りを明示的に指定する場合は、次のように書きます。

# タブ区切りを明示的に指定する $ cut -f1 data.tsv # $'\t' でタブを指定する方法もある $ cut -d$'\t' -f1,3 data.tsv

-d を指定しないで -f だけ指定すれば、自動的にタブ区切りで処理されます。

スペース区切りで意図通りに抽出できない場合

スペースを区切り文字に指定する場合は、-d の後にスペースをクォートで囲む必要があります。

# スペースを区切り文字にする $ echo "aaa bbb ccc" | cut -d' ' -f2 bbb

ただし、先述のとおり連続スペースがあるデータ(psやdfの出力など)ではcutは不向きです。tr -s ' ' で連続スペースを1つに圧縮してからcutに渡すか、awkを使いましょう。

# 連続スペースを圧縮してからcutで処理する $ df -h | tr -s ' ' | cut -d' ' -f1,5

本記事のまとめ

やりたいこと コマンド
区切り文字を指定してフィールドを抽出する cut -d: -f1 /etc/passwd
複数のフィールドを抽出する cut -d: -f1,3 /etc/passwd
範囲指定でフィールドを抽出する cut -d: -f1-3 /etc/passwd
文字位置で抽出する cut -c1-10 ファイル名
CSVから特定列を取り出す cut -d, -f2,4 ファイル名.csv
連続スペースを圧縮してから抽出する df -h | tr -s ' ' | cut -d' ' -f1,5
タブ区切りのフィールドを抽出する cut -f1,3 ファイル名.tsv

シェルの基本コマンドを現場で使いこなしたい方へ

cut はログ調査やユーザー管理で日常的に使う基本コマンドです。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。