cut コマンド

目的

ファイルの行の分割に役立ちます。

構文

cut-b List -n ] |  -c List -f List -s ] [  -d Character ] } [ File ... ]

説明

cut コマンドは、ファイルの各行から、バイト、文字、フィールドをカットして、これらを標準出力に書き出します。File パラメーターを指定しないと、cut コマンドは標準入力を読み取ります。

-b-c-f フラグ のいずれかを指定する必要があります。 List パラメーターには、コンマ、ブランク、またはハイフンで区切られた整数番号の (昇順の) リストを指定します。ハイフン・セパレーターは範囲を示します。バイト、文字、またはフィールドを参照する List パラメーターの入力例を以下に示します。


1,4,7
1-3,8
-5,10
3-

-5 は 1 番目から 5 番目までを意味する 簡易書式で、3- は 3 番目から最後までを意味する簡易書式です。

cut コマンドでフィールドをカットする場合、 List パラメーターに指定したフィールド長を、フィールド別または行別に変更できます。タブ文字などのフィールド区切り文字の位置が、フィールドの長さを決定します。

grep コマンドを使用してファイル全体を水平方向にカットし、paste コマンドを使用してファイルを再度まとめることができます。ファイル内の列の順序を変更するには、cut コマンドと paste コマンドを使用します。

フラグ

項目 説明
-b List バイト位置を指定します。-n フラグも同時に指定しないと、このフラグで指定したバイト位置では、マルチバイト文字境界が無視されます。
-c List 文字位置を指定します。例えば、-c 1-72 と指定すると、cut コマンドはファイルの各行の先頭から 72 文字を書き出します。
-d Character -f フラグを指定した場合に、フィールド区切り文字として Character 変数で指定した文字が使用されます。 スペース文字のように、 シェルに対して特殊な意味を持つ文字は、引用符で囲まなければなりません。
-f List ファイル内で区切り文字で区切られると想定される一連のフィールドを指定します。デフォルトではタブ文字が区切り文字です。例えば、-f 1,7 と指定すると、cut コマンドは各行の 1 番目と 7 番目のフィールドだけを書き出します。フィールド区切り文字のない行の場合、-s フラグが指定されていない限り、 cut コマンドは行全体をそのまま渡します (これはテーブルにサブヘッダーを付けるときに有効です)。
-n マルチバイト文字の分割を抑制します。必ず -b フラグも同時に指定してください。 文字の最終バイトが -b フラグの List 変数で示される範囲内に入っている場合、この文字は書き込まれます。最終バイトが範囲内に入っていない場合は、この文字は除外されます。
-s 区切り文字が含まれていない行を抑制します。必ず -f フラグも同時に指定してください。

終了状況

このコマンドは、以下の終了値を返します。

項目 説明
0 すべての入力ファイルが正常に出力されました。
>0 エラーが発生しました。

  1. ファイルの各行のフィールドをいくつか表示するには、以下のように入力します。
    cut  -f 1,5 -d : /etc/passwd
    この例では、システムのパスワード・ファイルのログイン名のフィールドと完全ユーザー名のフィールドが表示されます。第 1 フィールドと第 5 フィールド (-f 1,5) は、コロンで区切られます (-d :)。

    例えば、/etc/passwd ファイルの内容が以下のような場合、

    su:*:0:0:User with special privileges:/:/usr/bin/sh
    daemon:*:1:1::/etc:
    bin:*:2:2::/usr/bin:
    sys:*:3:3::/usr/src:
    adm:*:4:4:System Administrator:/var/adm:/usr/bin/sh
    pierre:*:200:200:Pierre Harper:/home/pierre:/usr/bin/sh
    joan:*:202:200:Joan Brown:/home/joan:/usr/bin/sh
    cut コマンドによる出力は以下のようになります。
    su:User with special privileges
    daemon:
    bin:
    sys:
    adm:System Administrator
    pierre:Pierre Harper
    joan:Joan Brown
  2. ブランクで区切られたリストで各フィールドを表示するには、以下のように入力します。
    cut -f "1 2 3" -d : /etc/passwd
    cut コマンドによる出力は以下のようになります。
    su:*:0
    daemon:*:1
    bin:*:2
    sys:*:3
    adm:*:4
    pierre:*:200
    joan:*:202

ファイル

項目 説明
/usr/bin/cut cut コマンドが入っているファイルです。