Linux 文件流處理三劍客學習第一篇 grep
工作中經常需要碰到Linux的日誌或者命令輸出,處理輸出的文件流資訊,作為我個人認為的三劍客之首,grep平時用的最多,但基本也就是全量匹配,或者加個i不區分大小寫進行匹配。
趁最近工作有空閒,首相對grep進行一些學習。
參考連結:
https://blog.csdn.net/jinguangliu/article/details/81129426
https://www.cnblogs.com/sidianok/p/12931683.html
簡介:
grep(global search regular expression(RE) and print out the line)
全面搜尋正則表示式並將其列印輸出
通過grep--help輸出可以看到非常多的選項,我還是參考網上的資料,先走一遍流水。
[root@www ~]# grep [-acinv] [--color=auto] '搜尋字串' filename 選項與引數: -a :將 binary 檔案以 text 檔案的方式搜尋資料 -c :計算找到 '搜尋字串' 的次數 -i :忽略大小寫的不同,所以大小寫視為相同 -n :順便輸出行號 -v :反向選擇,亦即顯示出沒有 '搜尋字串' 內容的那一行! --color=auto :可以將找到的關鍵詞部分加上顏色的顯示喔!
平時用的比較多的是-i 個人感覺比較有用的有-v -n
找到一個比較使用的引數 -A3 -B2
-A, --after-context=NUM 列印以文字結尾的NUM 行
-B, --before-context=NUM 列印以文字起始的NUM 行
-C, --context=NUM 列印輸出文字NUM 行[前後都列印]
通過這兩個引數可以打印出,匹配行資訊的後幾行或者前幾行資訊.
grep 可以直接與正則表示式配合使用,使用規則與Python語言中的正則使用差不多。規則需要用單引號包起來,特殊符號匹配需要用轉移符號\進行轉義
需要轉移的包含但不僅限與:{,},-,\,
具體規則不在重複,提示自己需要在規則中前後新增單引號,
對於|[或]和+[1個或者]與?等擴充套件正則使用字元,
可以用過grep -E使用,或者在grep是用的時候,在這個符號之前+上轉移字元
通過本人測試,其實通過grep -E官方的解釋為:-E, --extended-regexp PATTERN 是一個可擴充套件的正則表示式(縮寫為 ERE)
其實通過-E的選項使用正則規則更加合適,你可以在任何情況下都加上,這樣grep能認識所有的正則裡面的符號,使用的時候不需要在正則符號比較{-等符號之前加上\的轉義符
如果需要將正則中的特殊符號當做普通字元匹配,就可以通過轉移符\
(base) [sidian@VM_0_17_centos ~]$ echo '{}' |grep '{}' {} (base) [sidian@VM_0_17_centos ~]$ echo '{}' |grep -E '\{\}' {}
上面演示了匹配{}的寫法
最後我對-E的使用,我認為如果用到了正則符號就上-E引數,如果沒用到就不用E了