#navi(../)
* 指定したフィールドを抜き出す・cutコマンド [#z95cddee]
cutコマンドを利用して指定したフィールドと指定したフィールド範囲を抜き出す方法を記します。

#contents
#htmlinsertpcsp(linux_ads_top.html,linux-sp.html)

* 関連記事 [#efd94a2c]
-[[指定した位置の文字列を抜き出す>逆引きUNIXコマンド/指定した位置の文字列を抜き出す]]
-[[指定した位置の文字列を抜き出す・echoコマンド>逆引きUNIXコマンド/指定した位置の文字列を抜き出す・echoコマンド]]
-[[文字列の長さを調べる方法>逆引きシェルスクリプト/文字列の長さを調べる方法]]
-[[特定の文字が含まれているかを調べる>逆引きUNIXコマンド/特定の文字が含まれているかを調べる]]

* cutコマンドについて [#q05e8b64]
cutコマンドのデフォルトの区切り文字はタブとなっています。~
区切り文字を変更するには、-dオプションを利用します。~
スペースを区切り文字にした例とカンマを区切り文字した例を以下に記します。~
使用したテストデータは以下の3つです。
- タブ区切り &ref(data.tsv);
 $ cat data.tsv 
 centos	redhat	fedora	scientific
 debian	ubuntu	knoppix	mint
 suse	vine	arch	puppy

- スペース区切り &ref(data.txt);
 $ cat data.txt 
 centos redhat fedora scientific
 debian ubuntu knoppix mint
 suse vine arch puppy

- カンマ区切り &ref(data.csv);
 $ cat data.csv 
 centos,redhat,fedora,scientific
 debian,ubuntu,knoppix,mint
 suse,vine,arch,puppy

* 指定したフィールドを取り出す [#g059c53f]
指定したフィールドを取り出す例を以下に記します。~
** タブが区切り文字の場合 &ref(data.tsv); [#k46f32b4]
2フィールド目を取り出します。
 $ cut -f 2 data.tsv 
 redhat
 ubuntu
 vine
以下のように記述しても同様の動作となります。
 $ cat data.tsv | cut -f 2
 redhat
 ubuntu
 vine

** 区切り文字がスペース &ref(data.txt); [#o29cd4e6]
3フィールド目を取り出します。
 $ cut -d ' ' -f 3 data.txt 
 fedora
 knoppix
 arch
以下のように記述しても同様の動作となります。
 $ cat data.txt | cut -d ' ' -f 3
 fedora
 knoppix
 arch

** 区切り文字がカンマ &ref(data.csv); [#l0e64486]
4フィールド目を取り出します
 $ cut -d , -f 4 data.csv
 scientific
 mint
 puppy
以下のように記述しても同様の動作となります。
 $ cat data.csv | cut -d , -f 4
 scientific
 mint
 puppy

* 指定したフィールド範囲を取り出す [#r17a8e58]
指定したフィールド範囲を取り出す例を以下に記します。~
2番めから3番めのフィールドを取り出します。
** タブが区切り文字の場合 &ref(data.tsv); [#v8b0da70]
 $ cut -f 2-3 data.tsv 
 redhat  fedora
 ubuntu  knoppix
 vine    arch
以下のように記述しても同様の動作となります。
 $ cat data.tsv | cut -f 2-3
 redhat  fedora
 ubuntu  knoppix
 vine    arch

** 区切り文字がスペース &ref(data.txt); [#k449503f]
 $ cut -f 2-3 -d ' ' data.txt
 redhat fedora
 ubuntu knoppix
 vine arch
以下のように記述しても同様の動作となります。
$ cat data.txt | cut -f 2-3 -d ' '
redhat fedora
ubuntu knoppix
vine arch

** 区切り文字がカンマ &ref(data.csv); [#r50f071f]
 $ cut -f 2-3 -d , data.csv
 redhat,fedora
 ubuntu,knoppix
 vine,arch
以下のように記述しても同様の動作となります。
 $ cat data.csv | cut -f 2-3 -d ,
 redhat,fedora
 ubuntu,knoppix
 vine,arch

以上のように-''f 開始フィールド-終了フィールド''を指定すると指定した範囲を取り出すことができます。~

* 指定したフィールドから最後まで [#pebff02e]
終了フィールドを省略すると指定した開始フィールドから最後までが表示されます。~
以下の例は、3フィールド目から最後まで表示しています。
 $ cat data.tsv 
 centos  redhat  fedora  scientific
 debian  ubuntu  knoppix mint
 suse    vine    arch    puppy
 $ cut -f 3- data.tsv
 fedora  scientific
 knoppix mint
 arch    puppy

* 先頭から指定したフィールドまで [#jfa601e8]
開始フィールドを省略すると先頭から指定した終了フィールドまで表示されます。
以下の例は3フィールド目まで表示しています。
 $ cat data.tsv 
 centos  redhat  fedora  scientific
 debian  ubuntu  knoppix mint
 suse    vine    arch    puppy
 $ cut -f -3 data.tsv 
 centos  redhat  fedora
 debian  ubuntu  knoppix
 suse    vine    arch

#htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS