unixコマンドの練習[grep]
grepはファイル内からパターンにマッチする行を抜き出して表示するコマンド。オプションを指定することでディレクトリを再帰的に検索することもできるし、ファイル名を指定しなければ標準入力から検索するので、パイプライン処理で使うこともできる。
文法
grep [オプション] パターン [ファイル名]
下準備
grepは文字列検索用のコマンドなので、練習用ディレクトリをわざわざ用意するのは大変。そこで、今まで使っていたrubyの作業用ディレクトリを練習用ディレクトリとして使うことにしました。
練習
test.rb内のforを含む行を表示する。
grep for test.rb
test.rb、test2.rb内のforを含む行を表示する。
grep for test.rb test2.rb
- nオプションをつけてforを含む行の行数を一緒に表示する。
grep -n for test.rb
grep -r for ./
- Aオプションをつけて、マッチする行から複数行下まで表示する。(例は3行)
grep -A 3 for test.rb
- Bオプションを付けて、マッチする行から複数行上まで表示する。(例は3行)
grep -B 3 for test.rb
正規表現を使った検索
grep 'def\s.*(.*)' test.rb
パイプライン処理を使ってカレントディレクトリ内の.rbファイルのみを表示
ls | grep .rb
最後のパイプライン処理が一番使う機会が多いのかなあという気がします。パッケージを検索するときなんかにもyumと組み合わせて良く使いますしね。