名称
cut ― ファイルの各行から指定のフィールドをカット (抽出)
構文
cut -c list [file ...]
cut -b list [-n] [file ...]
cut -f list [-d char] [-s] [file ...]
説明
cut により、テーブルのカラムや、 ファイルの各行からフィールドをカット
(抽出) することができます。 データベース関連の用語で言うと、 関係の射影を行うことに相当します。 list で指定するフィールドは固定長 (-c または -b オプションを使用する場合に行の文字またはバイト位置で定義して)
とすることも、また可変長として タブ文字 などのフィールド区切り文字でマークすること
(-f オプションを使用する場合) もできます。 cut は、フィルタとして使用することもできます。
ファイルを指定していない場合は、標準入力が使用されます。
シングルバイト文字セットを処理する場合は、 -c および -b オプションは等価であり同じ結果になります。
マルチバイト文字セットを処理する場合で、 -b および -n オプションを併用する場合は、その組み合わせ動作は類似していますが、 -c オプションを同じではありません。
オプション
オプションの意味は、次のとおりです。
| list | | 昇順のコンマで区切った整数 バイト (-b オプション)、 文字 (-c オプション)、または、 フィールド (-f オプション) 番号のリストで、オプションの - で範囲を示します。
例: | 1,4,7 | | 1, 4, および 7 の位置。 | | 1-3,8 | | 1 〜 3 および 8 の位置。 | | -5,10 | | 1 〜 5 および 10 の位置。 | | 3- | | 3 〜 最後の位置までの位置。 |
|
| -b list | | バイトのリストに基づいてカットします。 -n オプションを同時に指定しない場合は、
選択された各バイトが出力されます。 |
| -c list | | list の指定する文字位置に基づいてカットします (-c
1-72 は、各行の最初の 72 文字を抽出します)。 |
| -f list | | list はファイル中のフィールドをリストしたものです。 各フィールドは、デリミタ文字
(-d 参照) で分離されていることを条件とします。
例えば、 -f 1,7 では、最初のフィールドと 7 番目のフィールドだけがコピーされます。
フィールドデリミタのない行は、 -s オプションを指定していない限り、
そのまま通されます (テーブルのサブヘッダなどに利用できます)。 |
| -d char | | -d の後の文字はフィールドデリミタ文字です
(-f オプションの場合に限って有効になります)。
デフォルトは tab です。 スペース、その他シェルに対して特別な意味のある文字は、
コーテーションで囲む必要があります。 フィールドデリミタが連続して並んでいる場合は、
ヌルフィールドとみなされます。 char は、 サポートされるコードセットです。 |
| -n | | 文字を分割しません。 リスト内の範囲の上限が文字の最後のバイトでない場合は、
その文字は出力には含まれません。 ただし、リスト内の範囲の下限が文字の最初のバイトでない場合は、
文字全体が出力に含まれます。 |
| -s | | -f オプションを使用した場合にデリミタ文字のない行を抑制します。 -s を指定しないと、
デリミタのない行は変更なしで出力されます。 |
ヒント
テキストパターン認識 (正規表現を使用) に基づいてファイルから
テキストを抽出するには、 grep を使用します。
カラム形式で行ごとにファイルをマージするには、 paste を使用します。
テーブル内のカラムの配置の順序を変更するには、 cut および paste を使用します。
詳細については、 grep(1) および paste(1) を参照してください。
多言語化対応
環境変数
LC_CTYPE により、テキストをシングルバイト、
またはマルチバイトのいずれの文字で解釈するかを決定します。
環境に LC_CTYPE を指定していない場合、または空の文字列にセットされている場合は、
未指定の変数、または空の変数に対するデフォルトとして、 LANG の値が使用されます。
また、 LANG を指定していない場合、または空の文字列にセットされている場合は、 LANG の代わりに
"C" lang(5) 参照) がデフォルトとして使用されます。
インターナショナル変数に無効な値がセットされていると、 cut はインターナショナル変数がすべて "C"
にセットされているものとして動作します。 environ(5) を参照してください。
サポートされるコードセット
cut シングル/マルチバイトの文字コードセットがサポートされています。
インターナショナルのコードセットは -d char オプションで指定することができます。 cut は、 LC_CTYPE 環境変数で指定した環境でサポートされる文字コードセットを認識します。
例
ユーザ ID とユーザ名のパスワードファイルのマッピング:
cut -d : -f 1,5 /etc/passwd
環境変数 name を現在のログイン名にセット:
name=`who am i | cut
-f 1 -d " "`
任意の長さの行を含む source ファイルを、
最初の 500 バイト (500 番目のバイトがマルチバイト文字の内部でない場合)
を含む file1 、および各行の残りを含む file2 に変換します。
cut -b 1-500 -n source > file1
cut -b 500- -n source > file2
診断
| line
too long | | 行の長さは、改行文字を含め、 LINE_MAX 文字またはフィールドを超えてはなりません
( limits(5) 参照)。 |
| bad list for b/c/f option |
| | | -b, -c, または -f オプションが指定されていないか、または list が正しく指定されていません。 行のフィールド数が list で指定した数より少なければ、エラーになりません。 |
| no fields | | list が空です。 |
警告
cut はタブを展開しません。 タブを展開するには、テキストをパイプで expand(1) を通過させてください。
バックスペース (後退) 文字は他の文字と同じように処理されます。 cut で処理する前にバックスペース文字を削除するには、 fold または col コマンドを使用してください
( fold(1) および col(1) を参照)。
著者
cut は、OSF と HP が開発しました。
標準準拠
cut: SVID2, SVID3, XPG2, XPG3, XPG4, POSIX.2