cut 行から指定した列や文字だけを取り出す
cut オプション [ファイル...]試してみる
cut -d, -f2 members.csvカンマ区切りの2番目の項目(名前)を取り出します。
cut -d, -f2,4 members.csv2番目と4番目の項目を取り出します。出力も同じ区切りです。
cut -d, -f2-3 members.csv2番目から3番目までの範囲を取り出します。
cut -d: -f1,7 passwd.txtコロン区切りの設定ファイルから、ユーザー名とシェルを取り出します。
cut -c1-3 members.csv区切りではなく、先頭から1〜3文字目を取り出します。
cut -d, -f1 --complement members.csv1番目の項目以外をすべて取り出します。
主なオプション
-d 区切り文字 | 項目を分ける文字を指定する(既定はタブ) |
|---|---|
-f 項目 | 取り出す項目を番号で指定する(1始まり。2,4 や 2-4 の形) |
-c 文字 | 取り出す文字の位置を指定する |
-b バイト | 取り出すバイトの位置を指定する |
--complement | 指定した部分以外を取り出す |
-s | 区切り文字を含まない行を出力しない |
解説
基本
cut は、行ごとに決まった部分だけを取り出します。取り出し方は、項目で指定する -f、文字位置で指定する -c、バイト位置で指定する -b の3通りです。どれか1つを必ず付けます。
区切り文字
-f の区切りは、既定ではタブです。CSVや /etc/passwd のように別の文字で区切られたファイルでは、-d, や -d: で指定します。区切りは1文字だけで、空白が何個か続いたものを1つの区切りとして扱うことはできません。そういう処理には awk などが向いています。
範囲の書き方
N はN番目だけ、N-M はNからMまで、N- はNから最後まで、-M は最初からMまでです。カンマでいくつでもつなげられます。
順序は入れ替わらない
-f3,1 と書いても、出力は1、3の順です。順番を変えたいときは awk などを使います。
区切りのない行
区切り文字を含まない行は、既定ではそのまま出力されます。出したくないときは -s を付けます。