grep 正規表現

1. grep -E "\s+op[0-9]+\[[2-9]+p\]"

頭に複数のスペース、op、数字(0->9)複数、[、数字(2->9)複数、p、]
-E :正規表現を使用する
\s:半角スペース、タブ、改行
+:直前の文字の1回以上の繰り返し
[0-9]:[ ]の中のどれか1文字、[ ]内で正規表現は使えない
\[:記号はエスケープする
# grep -E "\s+op[0-9]+\[[2-9]+p\]" *.log
   op0[4p] {(sequential Db2_01)
   op0[8p] {(parallel Db2_01)
op14[8p] {(parallel buffer(0))
op26[8p] {(parallel buffer(6))
# grep -E "\s+op0\[[8]+p\]" *.log
   op0[8p] {(parallel Db2_01)

2. grep どちらかを含む

# cat list.txt
abc
def
abcdef
other
# grep -E "abc|def" list.txt
abc
def
abcdef

3.前後の検索

#cat list.txt
2020/07/01
Title1
101 CHAR
102
2020/07/02
Title2
201 CHAR
202 CHAR
#grep -B1 "Title" list.txt  #一致した行の前1行も表示する
2020/07/01
Title1
2020/07/02
Title2

#grep -i -B 1 "char" list.txt 

Title1
101 CHAR
--
Title2
201 CHAR
202 CHAR

#grep -A2 "Title" list.txt #一致した行の後ろ2行も表示する
Title1
101 CHAR
102
Title2
201 CHAR
202 CHAR

4./全角、半角の検索

[/tmp]$ grep "ABC" sakag_in.txt
3,/ABC987/ slash神奈川県大和市,080-9089-2314,bbb.aaa@yahoo.co.jp
8,/ABC987 slash神奈川県大和市,080-9089-2314,bbb.aaa@yahoo.co.jp
9,ABC987/ slash神奈川県大和市,080-9089-2314,bbb.aaa@yahoo.co.jp
10,/ABC987 slash神奈川県大和市,080-9089-2314,bbb.aaa@yahoo.co.jp
11,/ABC987/ slash神奈川県大和市,080-9089-2314,bbb.aaa@yahoo.co.jp
12,ABC987/ slash神奈川県大和市,080-9089-2314,bbb.aaa@yahoo.co.jp
[/tmp]$ grep -E "/+[0-9A-Z]+/+" sakag_in.txt
3,/ABC987/ slash神奈川県大和市,080-9089-2314,bbb.aaa@yahoo.co.jp

[/tmp]$ grep -E "/+[0-9A-Z]+/+" sakag_in.txt
11,/ABC987/ slash神奈川県大和市,080-9089-2314,bbb.aaa@yahoo.co.jp

5. 前後空白または前タブのonを検索

以下のデータからピンク行を検索する。

#cat test.txt

on A=B

    on A=B

        on A=B

▸-▸-on (test1.MAKENUM = test2.MAKENUM)

\(9)\(9)on (test1.NO_DUMMY = test2.NO_DUMMY)

partition by MAKENUM

union all

# grep -E '^[^a-zA-Z]*on[^a-zA-Z]' `cat test.txt`

(行頭からa-zA-Z以外の文字が1個以上で on、後にa-zA-Z以外の文字を検索する)

on A=B

    on A=B

        on A=B

▸-▸-on (test1.MAKENUM = test2.MAKENUM)

\(9)\(9)on (test1.NO_DUMMY = test2.NO_DUMMY)


コメント

人気の投稿