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

Linuxコマンドの基本:入力の一部を切り取る:cutコマンド

入力の一部を切り取る:cutコマンド

 Linuxでテキストデータを扱う際、ファイルやコマンドの出力から特定の部分だけを抽出したいことがあります。cutコマンドは、そのようなニーズに応えるための便利なツールで、入力行の一部分を切り出して出力することができます。

cutコマンドの概要

 cutコマンドは、テキストデータの各行を指定した区切り文字で分割し、その中から特定のフィールドを抽出します。

【書式】
cut -d <区切り文字> -f <フィールド番号> <ファイル名>

  • -dオプション:区切り文字を指定します。
  • -fオプション:抽出したいフィールド番号を指定します。

主なオプションと説明

オプション説明
-d区切り文字を指定する(デフォルトはタブ文字)
-f抽出するフィールド番号を指定する
主なオプションと説明
  • 区切り文字の指定-dオプションで指定した文字で入力行を分割します。指定しない場合、デフォルトでタブ文字が使用されます。
  • フィールド番号の指定-fオプションで抽出したいフィールドの番号を指定します。複数指定する場合はカンマで区切ります。

使用例

例1:CSVファイルから特定のカラムを抽出

 例えば、-d , -f 4と指定すると、区切り文字を「,」とし、4番目のフィールドだけを表示します。これはCSVファイルの特定のカラムを取り出す際に便利です。

file.csvの作成

 以下の内容の file1.csv というファイルをnanoエディタなどのテキストエディタで作成します。

user01@ubuntu-vm:~$ nano file.csv

file.csvの内容

 入力が完了したら、Ctrl + S を押してファイルを保存し、Ctrl + X を押してエディタを終了します。

Name,Age,Occupation,Country
Alice,30,Engineer,USA
Bob,25,Designer,UK
Charlie,35,Teacher,Canada
Diana,28,Doctor,Australia
Ethan,40,Artist,Germany

以下のコマンドを実行します。

user01@ubuntu:~$ cut -d , -f 4 file.csv
Country
USA
UK
Canada
Australia
Germany

例2:/etc/passwdファイルの解析

/etc/passwdファイルは、ユーザーの情報がコロン(:)で区切られて記述されています。

/etc/passwdファイル

以下のコマンドを実行します。

user01@ubuntu-vm:~$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
...(以下省略)...

各フィールドの意味

フィールド番号内容
1ユーザー名
2パスワード(ダミー値)
3ユーザーID(UID)
4グループID(GID)
5コメント(ユーザーの説明など)
6ホームディレクトリ
7ログインシェル
各フィールドの意味

ホームディレクトリを抽出する

 ホームディレクトリ(フィールド6)だけを出力したい場合は、次のようにコロン区切りで6番目のフィールドを指定します。

コマンド

user01@ubuntu-vm:~$ cut -d : -f 6 /etc/passwd

出力結果

/root
/usr/sbin
/bin
/dev
/bin
...(以下省略)...

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

 出力するフィールド番号は、カンマで区切って複数指定できます。次の例では、フィールド1(ユーザー名)、フィールド6(ホームディレクトリ)、フィールド7(ログインシェル)を表示しています。

コマンド

user01@ubuntu-vm:~$ cut -d : -f 1,6,7 /etc/passwd

出力結果

root:/root:/bin/bash
daemon:/usr/sbin:/usr/sbin/nologin
bin:/bin:/usr/sbin/nologin
sys:/dev:/usr/sbin/nologin
sync:/bin:/bin/sync
...(以下省略)...

不要なファイルの削除

作成したファイルを削除します。

user01@ubuntu:~$ rm file.csv

まとめ

 cutコマンドは、元のデータから特定の部分だけを取り出したい場合に非常に便利なコマンドです。区切り文字とフィールド番号を指定することで、必要な情報を簡単に抽出できます。CSVファイルの処理やシステムファイルの解析など、さまざまな場面で活用できますので、ぜひ習得しておきましょう。