- grep --color -f patterns.txt file.txt
- grep --color -xf patterns.txt file.txt
- grep --color -wf patterns.txt file.txt
- 一般抓文本資料的方法,只要列在patterns.txt裡面每一行的式樣(pattern)有匹配到file.txt那一行裡面隨便哪個部分,就會把結果印出來
- -x, --line-regexp:必須要file.txt裡面整行都完全與式樣有匹配才印出結果
- -w, --word-regexp:file.txt裡面看起來像一個字(word)的與式樣有匹配才會印出結果。一個字的定義是被`[[:<:]]'與`[[:>:]]'包含一群字元
以下範例,首先是式樣(pattern)存成一個叫做patterns.txt的檔案
sample1
sample3
再來就是要被這些式樣匹配的文本資料file.txt的檔案sample1
sample2
sample3
sample3
testsample1
test.sample1
sample1.test
sample11
sample12
sample20
sample1-2
sample4,9
sample5
sample6
測試 1:grep --color -f patterns.txt file.txt
sample1
sample3
sample3
testsample1
test.sample1
sample1.test
sample11
sample12
sample1-2
可以看到只要每一行裡面有部分匹配到,結果就會印出來,紅色是匹配到的部分。在這裡面通常sample11, sample12並不是一般希望抓出來的結果
測試 2:grep --color -xf patterns.txt file.txt
-x, --line-regexp又可以稱為完全匹配(exact match),整行都必須要跟式樣一樣
sample1
sample3
sample3
測試 3:grep --color -wf patterns.txt file.txt
-w, --word-regexp比較是一般想要抓出來的資料,就是某些字對了就印出來
sample1
sample3
sample3
test.sample1
sample1.test
sample1-2
參考資料
- Exact grep -f command in Linux
- Match exact string using grep
- 使用 grep 過濾兩個檔案(不)重複的內容
- man 7 regex:Linux下面查詢regular expression的方法
- man -a re_format:Mac下查詢regular expression的方法
沒有留言:
張貼留言