cut
コマンドは、テキストデータから 特定の列(フィールド)や文字範囲 を切り出すためのコマンドです。
実務では、CSVファイルから必要なカラムだけを抽出したり、ログの一部情報を取り出す際に利用されます。
構文(Syntax)
cut [オプション] [FILE...]
主なオプション一覧
オプション | 説明 | 使用例 |
---|---|---|
-f LIST | フィールド番号を指定して抽出(区切り文字は -d で指定、デフォルトはタブ) | cut -f1,3 data.txt |
-d CHAR | フィールド区切り文字を指定 | cut -d, -f2 data.csv |
-c LIST | 指定した文字位置を抽出 | cut -c1-5 file.txt |
-b LIST | 指定したバイト範囲を抽出(マルチバイト文字に注意) | cut -b1-10 file.txt |
--complement | 指定した列や文字以外を抽出 | cut -d, --complement -f1 data.csv |
-s | 区切り文字を含まない行を出力しない | cut -d, -s -f2 data.csv |
実行例
タブ区切りファイルの1列目を抽出
cut -f1 data.txt
出力例:
Alice
Bob
Charlie
CSVファイルの2列目を抽出
cut -d, -f2 data.csv
出力例:
25
30
28
1〜5文字目を抽出
cut -c1-5 file.txt
出力例:
Hello
World
複数列を抽出(1列目と3列目)
cut -d, -f1,3 data.csv
出力例:
Alice,90
Bob,75
Charlie,85
指定列以外を抽出(2列目以外)
cut -d, --complement -f2 data.csv
区切り文字を含まない行をスキップ
cut -d, -s -f2 data.csv
エラー例(存在しないファイルを指定)
cut -f1 missing.txt
出力例:
cut: missing.txt: No such file or directory
関連コマンド
awk
: テキスト処理全般に対応(複雑な処理が可能)sed
: 置換や削除など柔軟なテキスト編集が可能grep
: パターン検索tr
: 文字の変換や削除
備考
- フィールド抽出の際、区切り文字を必ず指定すること(デフォルトはタブ)。
- マルチバイト文字(日本語など)を扱う場合は
-c
よりも-f
を使う方が安全。 --complement
を使うと、不要な列を削除する用途にも利用できる。
参考
- manページ: man7.org cut(1)
- GNU Coreutils: https://www.gnu.org/software/coreutils/
コメント