Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

cut

ファイルの各行から一部分を切り出す
2015/05/20 08:00

対応OS: linux , freebsd, solaris
cut [-b BYTE-LIST] [-d DELIM] [-f FIELD-LIST] [FILE...]

 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」の結果からパーミッションとファイル名のみを切り出す
$ 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
$
HINT!

 lsコマンド・grepコマンド・パイプ

関連タグ

UNIXコマンド辞典トップページに戻る

All contents copyright © 2005-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5