cutコマンド : テキスト切り取り出力

Linuxコマンド(テキスト処理)
2023-10-18
ヒーローイメージ

目次
  1. コマンド概要
  2. コマンド書式
  3. コマンド使用例

コマンド概要

  • cutコマンドは指定したテキストの各行から特定部分を切り取り出力するするコマンドです。

  • ファイルを指定しない場合や-を指定した場合は、標準入力を読み込みます。

コマンド書式

コマンド書式
cut オプション [ファイル名]
オプション 説明

-b 位置
--bytes=位置

指定されたバイト位置のテキストのみを出力する。

-c 位置
--characters=位置

指定された文字位置のテキストを出力する。

-d 文字列
--delimiter=文字列

-fオプションと同時利用し区切り文字(=文字列)を指定する。デフォルトはタブ文字が指定されている。

-f 位置
--fields=位置

指定した各フィールド(=位置)だけを出力する。

-s
--only-delimited

-fオプションと同時利用し区切り文字(=文字列)が含まれない行を無視する(出力しない)。
  • 位置の指定方法には以下があります。

    指定方法 説明
    N N番目
    M,N M番目とN番目
    M-N M番目からN番目
    -N 行頭からN番目
    N- N番目から行末

コマンド使用例

動作確認環境
項目 補足
OS Amazon Linux 2
シェル bash 4.2.46
コマンド cut (GNU coreutils) 8.22
PS1 [\u@\h \W]$ プロンプト表示形式は [ユーザ名@ホスト名 カレントディレクトリ名]ユーザ権限
PS2 > 継続行のプロンプト表示形式

cut -b : 指定バイト数出力

  • -bオプションを使用すると入力テキスト(ファイル or 標準入力)の中から指定したバイト位置のテキストのみを出力します。

  • 以下の例では、別々の記法でバイト位置を指定しています。

    コマンド例
    // テスト用ファイル作成
    [username@hostname ~]$ echo 'Lorem ipsum dolor sit amet.' > tempfile1
    [username@hostname ~]$ echo 'consectetur adipiscing elit.' >> tempfile1
    [username@hostname ~]$ cat tempfile1
    Lorem ipsum dolor sit amet.
    consectetur adipiscing elit.
    
    // 2バイト目と3バイト目を出力
    [username@hostname ~]$ cut -b 2,3 tempfile1oron
    // 1バイト目から5バイト目を出力
    [username@hostname ~]$ cut -b 1-5 tempfile1Loremconse
    // 行頭から5バイト目までを出力
    [username@hostname ~]$ cut -b -5 tempfile1Loremconse
    // 7バイト目から行末までを出力
    [username@hostname ~]$ cut -b 7- tempfile1ipsum dolor sit amet.tetur adipiscing elit.
    

cut -c : 指定文字数出力

  • -cオプションを使用すると入力テキスト(ファイル or 標準入力)の中から指定された文字位置のテキストのみを出力します。

  • 以下の例では、別々の記法で文字位置を指定しています。

    コマンド例
    // テスト用ファイル作成
    [username@hostname ~]$ echo 'Lorem ipsum dolor sit amet.' > tempfile1
    [username@hostname ~]$ echo 'consectetur adipiscing elit.' >> tempfile1
    [username@hostname ~]$ cat tempfile1
    Lorem ipsum dolor sit amet.
    consectetur adipiscing elit.
    
    // 2文字目と3文字目を出力
    [username@hostname ~]$ cut -c 2,3 tempfile1oron
    // 1文字目から5文字目を出力
    [username@hostname ~]$ cut -c 1-5 tempfile1Loremconse
    // 行頭から5文字目までを出力
    [username@hostname ~]$ cut -c -5 tempfile1Loremconse
    // 7文字目から行末までを出力
    [username@hostname ~]$ cut -c 7- tempfile1ipsum dolor sit amet.tetur adipiscing elit.
    

cut -d -f : 指定区切り位置出力

  • -dオプションで区切り文字を指定し、-fオプションで区切り位置を指定することで指定した区切り文字で区切られた指定位置のテキストのみを出力することができます。

  • 以下の例では、/etc/passwdの中身を:(コロン)区切った1番目と7番目のみ出力しています。

    コマンド例
    // 対象テキストファイルの中身
    [vagrant@hostname ~]$ cat /etc/passwd | grep username
    username:x:1002:9999::/home/username:/bin/bash
    
    // 指定区切り位置のみ出力
    [vagrant@hostname ~]$ cut -d ':' -f 1,7 /etc/passwd | grep usernameusername:/bin/bash
    

cut -s -f : 区切り文字なし行無視

  • -sオプションを指定すると区切り文字がない行が出力されなくなります。

    コマンド例
    // テスト用ファイル作成
    [vagrant@hostname ~]$ cat <<EOF > tempfile1
    > HEADER
    > 1,2,3,4,5,6
    > A,B,C,D,E,F
    > EOF
    
    // テスト用ファイル中身確認
    [vagrant@hostname ~]$ cat tempfile1
    HEADER
    1,2,3,4,5,6
    A,B,C,D,E,F
    
    // 指定区切り位置のみ出力(-sオプションンなし)
    [vagrant@hostname ~]$ cut -d ',' -f 1,6 tempfile1
    HEADER
    1,6
    A,F
    
    // 指定区切り位置のみ出力(-sオプションンあり)
    [vagrant@hostname ~]$ cut -d ',' -f 1,6 -s tempfile11,6A,F
    

コメント


Palette Codeなるべく丁寧にプログラミング関連技術を解説するサイト