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/sh
su:User with special privileges daemon: bin: sys: adm:System Administrator pierre:Pierre Harper joan:Joan Brown
- ブランクで区切られたリストで各フィールドを表示するには、以下のように入力します。
cut コマンドによる出力は以下のようになります。cut -f "1 2 3" -d : /etc/passwd
su:*:0 daemon:*:1 bin:*:2 sys:*:3 adm:*:4 pierre:*:200 joan:*:202
ファイル
項目 | 説明 |
---|---|
/usr/bin/cut | cut コマンドが入っているファイルです。 |