テキスト抽出
grep
テキストファイルから条件に一致する行を抜き出す
実行オプション
オプション | 動作 |
-v | 条件に一致しない行を選ぶ |
-c | 含まれる行数をカウント |
-h | 複数ファイルをgrepした場合にファイル名を表示しない |
-i | 大文字小文字を区別しない |
-n | 行番号出力 |
などをよく使った
egrepは、"{}"を用いた繰り返しや"|"を用いた複数条件指定ができる
egrepは、"{}"を用いた繰り返しや"|"を用いた複数条件指定ができる
実行例
$ cat Souri.txt Koizumi Junichiro, Jimin Abe Shinzo,Jimin Fukuda Yasuo, Jimin Aso Taro,Jimin Hatoyama Yukio, Minsyu Kan Naoto, Minsyu
Minsyuが含まれる行数を数える(-n)
$ grep -n Minsyu Souri.txt 2
"Jimin"が含まれる行をファイルと画面に出力
$ grep Jimin Souri.txt | tee Jimin_Souri.txt Koizumi Junichiro, Jimin Abe Shinzo,Jimin Fukuda Yasuo, Jimin Aso Taro,Jimin
"Jimin"が含まれない(-v)行をファイルと画面に出力
$ grep -v Jimin Souri.txt |tee Minsyu_Souri.txt Hatoyama Yukio, Minsyu Kan Naoto, Minsyu
*_Souri.txtから名前のイニシャルがYの行を 行番号付(-n) で抜き出す
任意の文字列(.*)+" Y"+任意の文字列(.*)+','
任意の文字列(.*)+" Y"+任意の文字列(.*)+','
$ grep -n '.* Y.*,' *_Souri.txt Jimin_Souri.txt:3:Fukuda Yasuo, Jimin Minsyu_Souri.txt:1:Hatoyama Yukio, Minsyu
大文字小文字問わず(-i) アルファベット "t" が含まれる行を抜き出す
ファイル名は出力しない(-h)
ファイル名は出力しない(-h)
$ grep -hi 't' *_Souri.txt Aso Taro,Jimin Hatoyama Yukio, Minsyu Kan Naoto, Minsyu
大文字小文字問わずアルファベット3文字で始まる行を抜き出す
$ egrep -i '^[a-z]{3} ' Souri.txt Abe Shinzo,Jimin Aso Taro,Jimin Kan Naoto, Minsyu
行頭(^)が"K"から始まるorMinsyuが含まれる行を抜き出す
$ egrep '^K|Minsyu' Souri.txt Koizumi Junichiro, Jimin Hatoyama Yukio, Minsyu Kan Naoto, Minsyu
sort
実行オプション
オプション | 動作 |
-b | 行頭の空白文字(スペース,タブ)を無視 |
-c | すでにソート済みかチェック |
-f | 大文字小文字の区別なし |
-n | 数字と見なしてソート |
-r | 逆順に表示 |
-u | 同じ行を1度しか表示しない |
※自分は-uを知らずuniqを使っていた
uniq
実行オプション
-c | 連続して同じものがある場合カウント |
-d | 連続する行のみ表示 |
-u | 連続して同じ行があったら表示しない |
実行例
$ cat a.txt pppp xxxx yyyy zzzz pppp pppp xxxx $ sort a.txt | uniq -c 3 pppp 2 xxxx 1 yyyy 1 zzzz $ uniq -d a.txt pppp $ sort a.txt | uniq -d pppp xxxx