Grep
grepのor
eオプションにて
grep -e <PATTERN1> -e <PATTERN2>
正規表現にて
# -E(検索正規表現)が必要
# []リテラル一文字単位でOR検索可能
grep -E "^X|Y|Z"
# 文字列対応
grep -E "^(X|Y|Z)"
grep "^[XYZ]"
grep "^[X-Z]"
grep - or
一文字のor。
grep '[abcd]'
|は使わないということ。
文字列のor。
grep -E 'abc|def'
時間抽出例
$ seq -w 59 | grep -E '^(1[8-9]|[2-4][0-9]|5[0-2])' > a
$ seq 18 52 > b
$ cksum a b
1715181562 105 a
1715181562 105 b
$
コメント・空行の除去
grep による除去
コメント行を除去(先頭に空白があってもOK)
grep -v '^\s*#'
空行を除去(空白・タブだけの行も対象)
grep -v '^\s*$'
コメント行と空行の両方を除去
grep -Ev '^\s*#|^\s*$'
特定文字列が含まれるファイル一覧
grep -rin pattern .
- -r
- ディレクトリを再帰
- -i
- 大文字・小文字を区別しない
- -n
- 検索結果に行番号
合致前後取得
前9行 Before (10行出力)
grep -B 9 pattern
後ろ9行 After (10行出力)
grep -A 9 pattern
ファイルの引き算
$ cat text
1
2
3
4
5
6
7
8
9
10
$ cat pattern
1
4
5
7
10
$
text - pattern
cat text | grep -vf pattern