cutコマンドは、FILE...
に指定したファイルの各行から、それぞれ一部分を切り出して標準出力に出力します。
- ① -b BYTE-LIST
「BYTE-LIST」にリストされたバイト位置の文字だけを切り出して出力します。タブも1バイトとして扱います。
「BYTE-LIST」には、切り出すバイト位置のリストをカンマ(,)で区切って指定します。例えば「1,10」とすれば1バイト目と10バイト目を切り出します。また、ハイフン(-)を使って範囲を指定することができます。例えば「3-7」のようにすると3バイト目から7バイト目までを切り出します。先頭からNバイト目という指定をする場合には先頭を省略して「- N」とすることもできます。逆にNバイト目から最後までという指定をする場合には「N-」とすることができます。
- ② -f FIELD-LIST
「FIELD-LIST」にリストされた位置のフィールドだけを切り出して出力します。
「FIELD-LIST」には、切り出すフィールドの位置のリストをカンマで区切って指定します。また、ハイフンを使った範囲の指定も可能で、指定の仕方はオプション「-b」の「BYTE-LIST」と同様です。
- ③ -d DELIM
- オプション「-f」を指定する時に有効なオプションです。「DELIM」に指定した文字を、フィールドの区切り文字(デリミタ)とします。この時「DELIM」に2文字以上指定しても有効となるのは最初の1文字だけです。このオプションを省略すると、区切り文字は「
」(タブ)になります。
1行のテキスト内をある決められた文字または制御コード(これを区切り文字またはデリミタという)で区切った場合に、区切り文字間のひとつひとつをフィールドといいます
「BYTE-LIST」はバイト数であって、文字数ではありません。したがって、2バイト文字の全角文字などは、2バイトとして勘定する必要があります。誤った指定をすると、文字化けしたデータ
が表示されます
- ① FILE...
- 一部分を切り出すファイルをスペースで区切って指定します。ワイルドカードによる指定も可能です。
FILE...
を省略した場合は、標準入力からの読み込みとなります。省略時には、標準入力から読み込みます。
$ ls -l
合計12
-rw-rw-r-- 1 cmd cmd 4 3月17 13:11 cmd
drwxrwxr-x 2 cmd cmd 4096 4月15 16:55 dir01
-rw-rw-r-- 1 cmd cmd 195 5月25 12:05 lsfile
$ ls -l > lsfile
「ls -l」の結果をファイル「lsfile」に格納$ cut -b-10,58- lsfile
ファイル「lsfile」の各行の先頭から10バイト目まで(-10)と、58バイト目以降(58-)を出力合計12
-rw-rw-r--cmd
drwxrwxr-xdir01
-rw-rw-r―lsfile
$
$ grep home /etc/passwd
takedak:x:500:100:K.Takeda:/home/takedak:/bin/bash
cmd:x:501:501::/home/cmd:/bin/bash
lpic:x:502:502::/home/lpic:/bin/bash
user1:x:503:503::/home/user1:/bin/bash
u001:x:504:504::/home/u001:/bin/bash
u510:x:510:510::/home/u510:/bin/bash
u511:x:511:511::/home/u511:/bin/bash
「grep home /etc/passwd」の結果$ grep home /etc/passwd | cut -d: -f1,3
パイプを使って、「grep home /etc/passwd」の結果から、1番目と3番目のフィールドを出力この時デリミタはコロン(:)とするtakedak:500
cmd:501
lpic:502
user1:503
u001:504
u510:510
u511:511
$
関連タグ
本コンテンツは「UNIXコマンド辞典 ビギナー編」(2003年)を元にWeb用に再編集したものです
All Contents copyright © 2003-2009 Odyssey Communications Inc., Shoeisha Co., Ltd.