cut コマンドは、ファイルや標準入力から特定の列(フィールド)や文字を抽出するためのコマンドです。データの加工やフィルタリングに役立ちます。GNU coreutils に含まれており、Linux では GNU 版が、FreeBSD では BSD 版が提供されています。基本的な動作は共通していますが、細かなオプションの違いがあります。

基本的な使い方

編集
cut [オプション] [入力ファイル]

主なオプション(GNU coreutils版)

編集
主なオプション
オプション 説明
-f, --fields=LIST 抽出するフィールドを指定(カンマ区切りで複数指定可能)
-d, --delimiter=DELIM 区切り文字を指定(デフォルトはタブ)
-c, --characters=LIST 抽出する文字の範囲を指定
-b, --bytes=LIST 抽出するバイトの範囲を指定
-s, --only-delimited 区切り文字がある行だけを抽出
-n, --complement 指定した範囲以外を抽出
-z, --zero-terminated 出力の各フィールドをヌル文字で区切る

列(フィールド)を抽出

編集
cut -f 1 file.txt

file.txt の1列目(タブ区切り)を抽出。

複数の列を抽出

編集
cut -f 1,3 file.txt

file.txt の1列目と3列目を抽出。

区切り文字を指定して抽出

編集
cut -d ',' -f 2 file.csv

file.csv のカンマ区切りで2列目を抽出。

文字の範囲を指定して抽出

編集
cut -c 1-5 file.txt

file.txt の1文字目から5文字目までを抽出。

バイトの範囲を指定して抽出

編集
cut -b 1-5 file.txt

file.txt の1バイト目から5バイト目までを抽出。

区切り文字がある行のみ抽出

編集
cut -s -f 2 file.txt

区切り文字(タブ)が含まれている行の2列目を抽出。

指定した範囲以外を抽出

編集
cut -f 1,3 -n file.txt

1列目と3列目以外の列を抽出。

ヌル文字で区切った出力

編集
cut -z -f 1 file.txt

出力をヌル文字で区切って表示。

FreeBSD 版との違い

編集

FreeBSD でも cut コマンドは提供されていますが、GNU coreutils 版といくつか違いがあります。

主な違い:

編集
  1. -z(ヌル文字区切り)オプションが FreeBSD にはない
    • FreeBSD 版の cut には、-z オプションがないため、ヌル文字で区切られた出力を扱うことができません。
  2. -n(指定範囲以外抽出)オプションが FreeBSD にはない
    • FreeBSD 版の cut には、-n オプションがないため、指定した範囲以外のフィールドを抽出することができません。
  3. GNU coreutils 版を FreeBSD で使う方法
    • coreutils パッケージをインストールすると gcut という名前で GNU 版 cut が使える。
    pkg install coreutils
    gcut -f 1 file.txt  # GNU coreutils 版の cut
    

詳しくは、それぞれの環境で man cut を確認してください。