このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

新Linuxコマンド演習19

新Linuxコマンド演習19 概要

 「新Linuxコマンド演習19」では、Linuxでテキストデータを扱う際に非常に便利な cut コマンド を練習します。
 cut コマンドは、ファイルや標準入力から指定した部分(列)を切り出すためのツールで、システム管理やログ解析、データ抽出などで頻繁に利用されます。

この演習では、

  • /etc/passwd ファイルからユーザー名一覧の抽出
  • /etc/group ファイルからグループ名一覧の抽出
  • CSVファイルからの任意列データの取り出し

を通して、オプションの使い方(-d と -f)を理解します。

cut コマンドの書式

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

主なオプション

オプション説明使用例
-d 区切り文字区切り文字(デリミタ)を指定する。デフォルトはタブ。-d:(コロンで区切る)
-f フィールド番号抽出する列番号を指定する。複数指定も可能(例:-f1,3)-f1(第1列を抽出)
--complement指定した列以外を表示cut -d: --complement -f1 /etc/passwd
-c 文字範囲バイトまたは文字単位で切り出す-c 1-5(先頭から5文字まで)

解説
cut は「区切り文字」を基準にフィールドを分割します。
例えば /etc/passwd は「 :(コロン)」で区切られているため、-d: を指定してフィールドを選びます。

演習問題+模範解答例

演習01:ユーザーの一覧を確認する

問題
システム上のユーザー情報を確認してください。

模範解答例

[suzuki@AlmaLinux ~]$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
(省略)
suzuki:x:1000:1000:suzuki:/home/suzuki:/bin/bash
(省略)
tanaka:x:1001:1001::/home/tanaka:/bin/bash
yamamoto:x:1002:1002::/home/yamamoto:/bin/bash
watanabe:x:1003:1003::/home/watanabe:/bin/bash

解説
/etc/passwd ファイルには、システム上のユーザー情報が格納されています。
各行が1人のユーザーを表し、7つのフィールドに分かれています。

フィールド番号内容
1ユーザー名suzuki
2パスワード情報(xが入る)x
3ユーザーID (UID)1000
4グループID (GID)1000
5コメント欄suzuki
6ホームディレクトリ/home/suzuki
7ログインシェル/bin/bash

演習02:cut コマンドでユーザー名一覧を抽出する

問題
cut コマンドを使って /etc/passwd からユーザー名のみを一覧表示してください。

模範解答例

[suzuki@AlmaLinux ~]$ cut -d: -f1 /etc/passwd
root
bin
daemon
(省略)
suzuki
(省略)
tanaka
yamamoto
watanabe

解説

  • -d: → 区切り文字を「:」に指定
  • -f1 → 第1フィールド(ユーザー名)を抽出

この組み合わせで、/etc/passwd からユーザー名だけを取得できます。
システムスクリプトで特定のユーザーリストを抽出する際に非常に便利です。

演習03:cut コマンドでグループ一覧を抽出する

問題
/etc/group ファイルから、グループ名の一覧を表示してください。

模範解答例

[suzuki@AlmaLinux ~]$ cut -d: -f1 /etc/group
root
bin
daemon
(省略)
suzuki
(省略)
tanaka
yamamoto
watanabe
group1
group2
group3

解説
/etc/group も「 : 」で区切られており、以下のような構造になっています。

フィールド番号内容
1グループ名group1
2パスワード情報x
3グループID1005
4グループ所属ユーザーtanaka

したがって、cut -d: -f1 でグループ名のみを一覧できます。

演習04:区切り文字を指定してCSVファイルを加工する

問題
カンマ区切りのデータファイル test.csv を作成し、商品名の列だけを抽出してください。

模範解答例

[suzuki@AlmaLinux ~]$ echo "1,apple,100yen" > test.csv
[suzuki@AlmaLinux ~]$ echo "2,orange,200yen" >> test.csv
[suzuki@AlmaLinux ~]$ echo "3,banana,500yen" >> test.csv
[suzuki@AlmaLinux ~]$ echo "4,strawberry,400yen" >> test.csv
[suzuki@AlmaLinux ~]$ cat test.csv
1,apple,100yen
2,orange,200yen
3,banana,500yen
4,strawberry,400yen

[suzuki@AlmaLinux ~]$ cut -d, -f2 test.csv
apple
orange
banana
strawberry

解説
-d, により区切り文字を「カンマ」に指定しています。
-f2 で第2フィールド(商品名)だけを切り出しています。

このように、cutコマンドはCSVやログファイルから特定の列だけ抽出する場合に有効です。

演習終了時の作業

問題
作成したファイル test.csv を削除してください。

模範解答例

[suzuki@AlmaLinux ~]$ rm test.csv

解説
作成した一時ファイルは不要になったら削除します。
これによりシステムを清潔に保つことができます。

cut コマンドの活用例まとめ

目的コマンド例説明
/etc/passwd からユーザー名一覧を取得cut -d: -f1 /etc/passwdコロン区切りの1列目を取得
/etc/group からグループ名一覧を取得cut -d: -f1 /etc/groupグループ名のみを抽出
CSVファイルから特定列を抽出cut -d, -f2 test.csv商品名など任意列を取得
特定列を除いて表示cut -d: --complement -f1 /etc/passwd指定以外の列を出力

補足
 cutは単純な列抽出に特化しており、条件指定などの柔軟な処理を行う場合は awk コマンドが適しています。
しかし、単純な処理では cut の方が軽量で高速です。

まとめ

 「新Linuxコマンド演習19」では、cut コマンドを用いてテキストデータの特定フィールドを効率的に抽出する方法を学びました。

  • -d:区切り文字を指定する。
  • -f:抽出するフィールドを指定する。
  • システムファイル( /etc/passwd , /etc/group )の内容を解析できる。

 cutコマンドを理解すると、ログ解析・ユーザー管理・CSVデータ処理など、日常的なLinux管理作業を効率化できます。