ファイルの各行から必要な部分の抜き出し ~cutコマンド~
今回の内容
今回は、cutコマンドについて解説します。
cut
指定したテキストファイルの各行から、必要な項目のみ抜き出して表示するには「cut」コマンドを使用します。
cutコマンド | |
---|---|
意味 | 指定したテキストファイルの各行から、必要な項目のみ抜き出して表示する |
書式 | cut [オプション] [ファイル名] |
[root@localhost ~]# cut -f1 -d: /etc/passwd root bin daemon adm lp sync shutdown
下記にwcコマンドのオプションを紹介します。
オプション | 説明 |
---|---|
-f | 表示するフィールドの指定 |
-d | デリミタ(区切り文字)の指定 |
フィールドとは、区切り文字で区切った際にできる各項目です。上記の例では、/etc/passwd の項目を抜き出しています。
/etc/passwd は「:」で区切られていますので、-d オプションで「:」を指定しています。デフォルトでは区切り文字は半角スペースとなっています。
ユーザー名は1番目のフィールドですので、-f オプションで1を指定します。フィールドは複数指定することが可能です。
[root@localhost ~]# cut -f1,7 -d: /etc/passwd root:/bin/bash bin:/sbin/nologin daemon:/sbin/nologin adm:/sbin/nologin lp:/sbin/nologin sync:/bin/sync shutdown:/sbin/shutdown
1番目と7番目のフィールドを指定したことにより、ユーザー名:ログイン時のデフォルトシェルという形で出力されています。
cutコマンドは、CSVフォーマットのファイルから一部分を抜き出したい時などに便利です。
[root@localhost ~]# cat test.csv id,name,age,address 1,"Taro",11,"Tokyo" 2,"Hanako",21,"Saitama" 3,"Jiro",15,"Chiba" [root@localhost ~]# cut -f2,4 -d, test.csv name,address "Taro","Tokyo" "Hanako","Saitama" "Jiro","Chiba"
注意したいのは、cutコマンドはあくまでも出力結果を整形しているに過ぎないということです。言い換えれば、元のファイルが書き換わっているわけではありません。
整形後の出力結果がファイルとしてほしい場合は、リダイレクトを使用します。
[root@localhost ~]# cut -f2,4 -d, test.csv > test2.csv [root@localhost ~]# cat test2.csv name,address "Taro","Tokyo" "Hanako","Saitama" "Jiro","Chiba"
まとめ
今回は、ファイルの各行の一部分のみを抜き出して出力するcutコマンドについてでした。
何らかのデータをもとに、スクリプトの処理を実行したい!みたいなケースでは特によく使われるコマンドです。今回取り上げた使い方ができるようにぜひマスターしましょう。
それでは今回はこのあたりで。
確認問題
テキストファイルの各行の一部分のみを抜き出して出力するコマンドは次のうちどれか。
A) sort
B) cut
C) tr
D) tail
「/」で区切られたファイル「test.txt」の、第2フィールドと第5フィールドを抜き出して出力するコマンドラインとして正しいものを選択しなさい。
A) cut -f/ -d2,5 test.txt
B) cut -f2,5 -d’/’ test.txt
C) cut test.txt
D) cut -f2 5 -d/ test.txt