GNU Core Utilities/cut
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 版といくつか違いがあります。
主な違い:
編集-z
(ヌル文字区切り)オプションが FreeBSD にはない- FreeBSD 版の
cut
には、-z
オプションがないため、ヌル文字で区切られた出力を扱うことができません。
- FreeBSD 版の
-n
(指定範囲以外抽出)オプションが FreeBSD にはない- FreeBSD 版の
cut
には、-n
オプションがないため、指定した範囲以外のフィールドを抽出することができません。
- FreeBSD 版の
- GNU coreutils 版を FreeBSD で使う方法
coreutils
パッケージをインストールするとgcut
という名前で GNU 版cut
が使える。
pkg install coreutils gcut -f 1 file.txt # GNU coreutils 版の cut
詳しくは、それぞれの環境で man cut
を確認してください。