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 | エラーが発生しました。 |
例
- ファイルの各行のフィールドをいくつか表示するには、以下のように入力します。cut -f 1,5 -d : /etc/passwdこの例では、システムのパスワード・ファイルのログイン名のフィールドと完全ユーザー名のフィールドが表示されます。第 1 フィールドと第 5 フィールド (-f 1,5) は、コロンで区切られます (-d :)。
例えば、/etc/passwd ファイルの内容が以下のような場合、
cut コマンドによる出力は以下のようになります。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/shsu:User with special privileges daemon: bin: sys: adm:System Administrator pierre:Pierre Harper joan:Joan Brown - ブランクで区切られたリストで各フィールドを表示するには、以下のように入力します。
cut コマンドによる出力は以下のようになります。cut -f "1 2 3" -d : /etc/passwdsu:*:0 daemon:*:1 bin:*:2 sys:*:3 adm:*:4 pierre:*:200 joan:*:202
ファイル
| 項目 | 説明 |
|---|---|
| /usr/bin/cut | cut コマンドが入っているファイルです。 |