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