utte

cut 行から指定した列や文字だけを取り出す

cut オプション [ファイル...]

試してみる

主なオプション

-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 を付けます。

このコマンドを使う問題

  1. cut と sort でCSVの列から重複のない一覧を作る
  2. アクセスログから最も多いIPアドレスを調べる
  3. ファイルがどのパッケージに属するか調べる
  4. lspciでPCIデバイスのアドレスを調べる

関連するコマンド

LinuC 101の出題範囲