今更人には聞けないgrepのオプション(前編)
- -v (--invert-match)
- -B NUM (--before-context=NUM)
- -C NUM (--context=NUM)
- -A NUM (--after-context=NUM)
- -c (--count)
- -f FILE (--file=FILE)
- -H (--with-filename)
- -h (--no-filename)
- -n (--line-number)
- -r (--recursive)
マッチしなかった行を表示します。
例:
$ cat data.txt
ABCDE
FGHIJ
KLMNO
PQRST
UVWXY
$ grep "LMN" data.txt
KLMNO
$ grep -v "LMN" data.txt
ABCDE
FGHIJ
PQRST
UVWXY
マッチした行+NUMで指定した行数を表示します。
Bなら前の行、Cなら前後の行、Aなら後の行です。
例:
$ cat data.txt
ABCDE
FGHIJ
KLMNO
PQRST
UVWXY
$ grep -B 1 "LMN" data.txt
FGHIJ
KLMNO
$ grep -C 1 "LMN" data.txt
FGHIJ
KLMNO
PQRST
$ grep -A 1 "LMN" data.txt
KLMNO
PQRST
マッチした行数を表示します。"-v"と一緒に使うと、マッチしなかった行数を表示します。
例:
$ cat data.txt
ABCDE
FGHIJ
KLMNO
PQRST
UVWXY
$ grep -c "LMN" data.txt
1
$ grep -c -v "LMN" data.txt
4
ファイルからパターンを読み込みます。
例:
$ cat data.txt
ABCDE
FGHIJ
KLMNO
PQRST
UVWXY
$ cat LMN.dat
LMN
$ grep -f ./LMN.dat data.txt
KLMNO
複数ファイルの検索結果を表示する際に、ファイル名の表示/非表示を指定します。
例:
$ cat 1.dat
ABCDE
$ cat 2.dat
CDEFG
$ grep -H "CD" ./*.dat
./1.dat:ABCDE
./2.dat:CDEFG
$ grep -h "CD" ./*.dat
ABCDE
CDEFG
出力行に、ファイルの中での行番号を表示します。
例:
$ cat data.txt
ABCDE
FGHIJ
KLMNO
PQRST
UVWXY
$ grep -v "LMN" data.txt
1:KLMNO
各ディレクトリ下を再帰的に検索します。
例:
$ cat ./data/data.txt
ABCDE
FGHIJ
KLMNO
PQRST
UVWXY
$ grep -r "LMN" ./data/
./data/data.txt:KLMNO