1. 程式人生 > 其它 >Linux 文件流處理三劍客學習第一篇 grep

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了