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

【Linux】特定の列を表示する:cutコマンド

cut コマンドの概要

 「cut」コマンドは、テキストファイルや標準入力から特定のフィールド(列)を抽出するためのLinuxコマンドです。このコマンドは、データの整形や特定の情報を取り出す際に非常に便利です。デリミタ(区切り文字)によって分割されたフィールドを指定することも、文字位置を指定して切り出すこともできます。

【構文】
cut [オプション] [ファイル名...]

  • [オプション]: 切り出すフィールドや文字位置を指定するためのオプション。
  • [ファイル…]: 対象となるファイル。省略すると標準入力から読み取ります。

主なオプションと説明

以下の表に、「cut」コマンドの主なオプションとその説明をまとめます。

オプション説明
-b指定したバイト位置を切り出します。例:-b 1-10 で最初の10バイトを表示。
-c指定した文字位置を切り出します。例:-c 1-10 で最初の10文字を表示。
-dフィールドを区切るデリミタを指定します。デフォルトはタブ文字。例:-d ',' でカンマを区切り文字として使用。
-f指定したフィールドを切り出します。例:-f 1,3 で1番目と3番目のフィールドを表示。
主なオプションと説明

コマンドの使用例と解説

以下に、「cut」コマンドの具体的な使用例とその出力例を示します。

サンプルファイルの作成

まず、以下の内容を持つサンプルファイル「example.txt」 を作成します。

・「nano example.txt」コマンドを実行します。

nanoエディタを起動して、「example.txt」ファイルを作成します。

user01@ubuntu-vm:~$ nano example.txt

以下の内容を入力します。

1,John,Doe,28
2,Jane,Smith,34
3,Bob,Johnson,25

 入力したら、「Ctrl + O」キーを入力して「Enter」キーで保存、「Ctrl + X」キーでnanoエディタを終了させます。

1.特定のフィールドを表示

・「cut -d ',' -f 2 example.txt」コマンドを実行します。

カンマ区切りの2番目のフィールド(名前)を表示します。

user01@ubuntu-vm:~$ cut -d ',' -f 2 example.txt
John
Jane
Bob

2.複数のフィールドを表示

・「cut -d ',' -f 1,4 example.txt」コマンドを実行します。

カンマ区切りの1番目と4番目のフィールド(IDと年齢)を表示します。

user01@ubuntu-vm:~$ cut -d ',' -f 1,4 example.txt
1,28
2,34
3,25

3.文字位置を指定して表示

・「echo "abcdefghij" | cut -c 1-5」コマンドを実行します。

最初の5文字を表示します。

user01@ubuntu-vm:~$ echo "abcdefghij" | cut -c 1-5
abcde

4.特定のバイト位置を表示

・「echo "1234567890" | cut -b 1-5」コマンドを実行します。

最初の5バイトを表示します。

user01@ubuntu-vm:~$ echo "1234567890" | cut -b 1-5
12345

5.標準入力から読み取り

・「echo "1,John,Doe,28" | cut -d ',' -f 3」コマンドを実行します。

 キーボード(=標準入力)から「echo “1,John,Doe,28″」と入力すると、ディスプレイ(=標準出力)に「hello world」と出力される内容をパイプ( | )して「cut」コマンドの入力としています。

カンマ区切りの3番目のフィールド(姓)を表示します。

user01@ubuntu-vm:~$ echo "1,John,Doe,28" | cut -d ',' -f 3
Doe

演習で作成したファイルの削除

演習で使用したファイルを削除します。

・「rm example.txt」コマンドを実行し、「ls」コマンドで削除されたかどうかを確認します。

user01@ubuntu-vm:~$ rm example.txt
user01@ubuntu-vm:~$ ls
snap          テンプレート  ドキュメント  ピクチャ      公開
ダウンロード  デスクトップ  ビデオ        ミュージック

まとめ

 「cut」コマンドは、テキスト処理において特定の列やフィールドを抽出するために非常に有用です。デリミタによるフィールド指定や文字位置、バイト位置の指定など、柔軟にデータを切り出すことができます。ログファイルやデータファイルの解析、データの整形など、さまざまなシチュエーションで活用できます。