* コマンド女子 *

~自分の備忘録~

文字列を検索したい grep

▼コマンド

grep
 ・指定した検索にマッチする文字列を表示

grep
その意味するところは「ファイル全体から (global) 正規表現 (regular expression) に一致する行を表示(print)する」である。(wikipediaより)


▼【 grep 】主なオプション
  -c パターンを含む行数のみを表示
  -h 検索結果の先頭にマッチしたファイル名を同時に表示
  -i アルファベットの大文字小文字の区別をしない
  -l 検索条件にマッチしたファイル名のみを表示
  -n 各行の先頭にファイルの行番号を表示
  -s 存在しないファイルや読めないファイルに対してのエラーメッセージを抑制する
  -v パターンに一致しない行を出力する
  -w パターンの検索を単語として行う
  -E 拡張正規表現を使用する
  -F 固定文字列を使用する


▼その他
grepには、grep, fgrep, egrepという3つのコマンドがあり、それぞれの目的に合わせて使い分けます。
 ・grep正規表現を使った文字列の検索を行う
 ・fgrep…正規表現は使用せずに文字列の検索を行う。オプション-E と同じような動作をする
 ・egrep…grep正規表現よりも強力な正規表現を用いて検索する。オプション-F と同じような動作をする

 

▼使用例
こんなファイルがあったとします。

$ cat test.csv
ID,name,age
1,aaa,20
2,bbb,34
3,ccc,40
4,ddd,35
5,eee,20

//20を取り出したい時
$ grep 20 test.csv
1,aaa,20
5,eee,20


//20以外を取り出したい時
$ grep -v 20 test.csv
ID,name,age
2,bbb,34
3,ccc,40
4,ddd,35


でも、「1行目」の「5」を取り出したい時。
普通にgrepだと、こうなっちゃう。。

$ grep 5 test.csv
4,ddd,35
5,eee,20

grep 以外のコマンドも使わないとですね。。


grepは超使うので、勉強のためにももっと書きたい(・∀・)