cut は各行から指定した列や文字だけを取り出すコマンドです。区切り文字を指定する `-d` と `-f`、文字位置で切る `-c` の使い分けを、ブラウザ上のターミナルで打ちながら確認できます。
最終更新: 2026-09-06
cut -d 区切り文字 -f 列番号 ファイル
cut -c 文字位置 ファイル
各行から、指定した部分だけを取り出します。
CSV から名前の列だけを取り出します。
$ cat users.csv
id,name,team,email
1,ada,web,ada@example.com
2,linus,infra,linus@example.com
3,grace,infra,grace@example.com
$ cut -d, -f2 users.csv
name
ada
linus
grace
-d が区切り文字、-f が何番目かです。
複数の列はカンマで並べます。
$ cut -d, -f1,3 users.csv
id,team
1,web
2,infra
3,infra
2- のように書くと、そこから最後までです。
$ cut -d, -f2- users.csv
name,team,email
ada,web,ada@example.com
linus,infra,linus@example.com
grace,infra,grace@example.com
桁のそろったデータには -c を使います。
ログの先頭10文字が日付なら、こう取り出せます。
$ cat logs/access.log
2026-09-06 10:12:33 200 /index
2026-09-06 10:12:41 404 /missing
2026-09-06 10:13:02 200 /index
2026-09-07 09:01:15 500 /boom
2026-09-07 09:02:44 200 /index
$ cut -c1-10 logs/access.log
2026-09-06
2026-09-06
2026-09-06
2026-09-07
2026-09-07
-c は区切り文字を見ず、何文字目かだけで切ります。
cut の出番は、たいてい集計の手前です。
ステータスコードの列だけを取り出して数えます。
$ cut -d' ' -f3 logs/access.log
200
404
200
500
200
$ cut -d' ' -f3 logs/access.log | sort | uniq -c
3 200
1 404
1 500
-d を省くと、区切りはタブになります。
$ cut -f2 report.tsv
status
200
404
コロン区切りのファイルなら -d: です。
/etc/passwd からユーザー名とログインシェルを取り出すのが、実務で最もよく見る例です。
$ cut -d: -f1,7 /etc/passwd
root:/bin/bash
user:/bin/zsh
deploy:/bin/bash
cut は、要る列だけにしてから次へ渡すときに打つコマンドです。
| 場面 | 打ち方 |
|---|---|
| CSV の1列だけ見る | cut -d, -f2 users.csv |
| ログの日付だけ取り出す | cut -c1-10 access.log |
| ステータスを数える | cut -d' ' -f3 access.log | sort | uniq -c |
| ユーザー名の一覧を作る | cut -d: -f1 /etc/passwd |
| TSV の列を取り出す | cut -f2 report.tsv |
列の順番は入れ替えられません。
cut -d, -f3,1 と書いても、出るのは 1・3 の順です。
順番を変えたい、計算したい、条件で絞りたい、のいずれかが要るなら awk の仕事です。
-c と -f は同時に使えません。
$ cut -c1 -f1 users.csv
cut: only one type of list may be specified
-d は -f と組でしか意味を持ちません。
$ cut -c1-4 -d, users.csv
cut: an input delimiter may be specified only when operating on fields
どちらも指定しないと動きません。
$ cut users.csv
cut: you must specify a list of bytes, characters, or fieldswebterm.appこのサイト
ターミナル基礎
よく使うコマンドを学ぶ
learn.webterm.app別のサイト
