概要
決まった区切りや位置に基づいて必要部分だけを抽出します。CSVに似た単純構造や、コロン区切りのファイルを扱う時に便利です。
基本構文
cut オプション... [ファイル]...詳細解説
cutは、各行の一定位置や区切り記号に基づいて、一部だけを抜き出すコマンドです。/etc/passwdのユーザー名だけを取り出す、ログの先頭列だけを見る、といった作業でよく使います。
強みは速さと単純さです。書式が安定したテキストなら非常に扱いやすい反面、引用符を含む複雑なCSVや可変長のあいまいな構造には向きません。そうした場面ではawkや専用の解析道具を使うほうが安全です。
実務では、確認用の短いパイプライン、集計前の前処理、IDやユーザー名など単一列の抽出で特に力を発揮します。区切り文字と対象番号を正確に把握することが重要です。
このコマンドを使う場面
区切り記号が明確なテキストから特定列だけを取り出したい時、列数の多い一覧から必要項目だけを見たい時に使います。
まず安全に試す方法
1. printf 'alice:1001:/bin/bashn' > users.txt
2. cut -d ':' -f 1 users.txt
3. cut -d ':' -f 2 users.txt
3分ミッション
少しでも手を動かすと定着しやすくなります。終わった項目にチェックを入れてください。
-
cut -d ':' -f 1 /etc/passwdでユーザー名だけを取り出します。
-
固定長風の入力に対してcut -cを試します。
資格試験との関連
-
LinuC レベル1
範囲: 1.03.2 フィルタを使ったテキストストリームの処理根拠: officialcutは、テキスト処理系の基本フィルタとしてLinuCレベル1の範囲に関わります。
-
LPIC-1
範囲: 103.2 フィルタを使ったテキストストリームの処理根拠: officialcutは、LPIC-1でテキストストリームへフィルタを適用する技能と関係します。
-
共通基礎
範囲: Linuxコマンド基礎根拠: editorialcutは、ファイル操作またはテキスト処理の基本を支えるため、試験横断の共通知識として価値があります。
実行結果サンプル
-
cut -d ':' -f 1 /etc/passwd | head -n 3root daemon bin
戻り値コード
- 0 正常終了。抽出に成功しました。
- >0 オプション不正や読取失敗などで失敗しました。
使用例
cut -d ':' -f 1 /etc/passwdcut -c 1-8 file.txtcut --complement -d ':' -f 7 /etc/passwd
よくあるエラー
-
CSVの抽出結果が崩れる 原因: 引用符や区切りの入れ子をcutでは正しく扱えません。対処: awkやCSV専用ツールを使います。
-
期待した列が取れない 原因: 区切り文字やフィールド番号を誤っています。対処: まずheadやcat -Aで元データの構造を確認します。
導入・互換性情報
POSIXで基本機能は標準化されています。GNU実装では--complementなどの拡張があります。多バイト文字の扱いは環境差に注意が必要です。
注意点 / セキュリティリスク
危険度は低いですが、複雑なCSVや引用符付きデータに対して単純な区切り抽出を行うと誤読します。構造が単純かどうかを見極めて使ってください。
FAQ
-
Q. cutとawkはどう使い分けますか。 A. 単純な列抽出ならcut、条件や計算が必要ならawkが向いています。
-
Q. タブ区切りも扱えますか。 A. はい。-f系は既定でタブ区切りを扱いやすいです。
参照リンク
- カテゴリー: Text Processing
- レベル: Basic
- 対応試験: LinuC, LinuC レベル1, LPIC, LPIC-1, 共通基礎