このページで解説している内容は、以下の 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ファイルの処理やシステムファイルの解析など、さまざまな場面で活用できますので、ぜひ習得しておきましょう。