grep/egrep/fgrep †
アクセスログの集計 †
空行に一致 †
カラーリング †
- --color=auto: 一致した文字列に色が付く
- --with-filename: ファイル名を出力
- --line-number: 行番号を出力
alias grep="grep --color=auto"
2つのテキストファイルの共通行だけ抽出 †
cat file1
aaa
bbb
cat file2
bbb
ccc
grep -x -i -f file1 file2
bbb
grepで正規表現にマッチした部分だけを抽出 †
- ダブルクオートで囲まれている項目だけを、ダブルクオート無しで抽出したい。
grepの使い方 †
- 例えば /tmp 以下にあるたくさんのファイルの中から "Linux" という文字を含むファイルを見つけ出したいとき
grep "Linux" /tmp/*
これで結果がずらずらと出てきます。
でもこれだと"linux"を含む文字列全てが対象となってしまいます。
- 単語の完全一致で検索したいときは
grep -w "Linux" /tmp/*
- 大文字と小文字の区別をなくしたいときは
grep -i "Linux" /tmp/*
- サブディレクトリ以下も再帰的に検索したい場合
grep -r "Linux" /tmp/*
- マッチした1行前も表示
grep -B 1 hoge
- マッチした1行後も表示
grep -A 1 hoge
- 指定した文字を含まないファイルを表示
grep -L hoge /tmp/*.txt
grep, wc, sortが遅い場合 †
- LC_ALL=C を付ける。マルチバイト(UTC-8)だと遅くなるようだ。日本語検索してなくてよいなら、30%以上早く実行できる。
LC_ALL=C grep ...
- grep 2.17以降では、"-i" の大文字/小文字無視で10倍以上高速になる場合があるらしい。