文章目錄
grep特點:
grep、sed和awk共屬於linux三劍客,awk擅長對記錄進行分割處理,sed利於對文本行進行修改,而grep則只是匹配輸出。某些使用上sed和grep有共同之處,都可以用來匹配輸出。不過grep的匹配更加強大。
grep使用場景:
在linux系統中,作爲java開發人員,經常會使用這樣一條命令:
ps -ef | grep -E ‘java|mysql’
這條命令可以幫助開發人員定位java和mysql進程,查看是否啓動成功和殺死進程,作爲最常用的命令,接下來我們來深入瞭解grep的使用方法
grep詳解:
正則匹配選項:
- -G:最基本的正則匹配,grep的默認選項
- -E:擴展的正則匹配,-G和-E的不同之處在最後講解
grep -E ‘a[p]+’ regular_test.txt
- -P:基於perl語言的匹配方式
匹配控制:
- -e:多次使用-e進行連續匹配
grep -e ‘the’ -e ‘apple’ regular_test.txt
- -f:將一個文件內容作爲匹配模式進行匹配,常用於比較文件
比較文件相同之處:
grep -f netstat.txt netstat2.txt
比較文件不同之處:
grep -v -f netstat.txt netstat2.txt
- -i和-y:匹配時忽略大小寫區別
grep -i the regular_test.txt
- -v:反選輸出,即選擇匹配不成功的行
grep -iv the regular_test.txt
- -w:用行中的單詞進行匹配,而非字母匹配或者包含匹配
grep -w tools regular_test.txt
基本輸出控制:
常用選項:
- -c:只打印結果行的數量
grep -ic the regular_test.txt
高級選項:
- –color:設置匹配字符串的顏色,默認選項爲auto,可以設置的值爲always,never
grep -i the regular_test.txt --color=never
never選項將會使得匹配字符串沒有任何樣式
- -m:指定匹配的行數,當匹配的行數達到了設定值,停止匹配
grep -i -m 3 the regular_test.txt
- -o:只打印匹配字符串
grep -i -m 3 -o the regular_test.txt
輸出行前綴控制:
常用選項:
- -n:指定行號
grep -i -n the regular_test.txt
高級選項:
- -h:行首不顯示文件名稱,默認選項
grep -i -h the regular_test.txt
- -H:行首顯示文件名稱
grep -i -H the regular_test.tx
- -b:行首顯示該行的字節數
grep -i -b the regular_test.txt
上下文行控制:
- -A:輸出匹配行的後面幾行內容,對應after的含義
grep -A 1 the regular_test.txt
- -B:輸出匹配行的前面幾行內容,對應before的含義
grep -B 2 the regular_test.txt
- -C:輸出匹配行的前後幾行內容
grep -C 1 the regular_test.txt
文件或者目錄選項控制,屬於高級
-
-D ACTION:當輸入是設備,比如FIFO隊列、socket套接字,將使用-D指定的ACTION進行操作,默認是read操作。如果指定爲skip,則會靜默跳過,不做處理
-
-d ACTION:當輸入是目錄,使用ACTION進行處理,可以參數爲read,skip,recurse,默認是r,將目錄當做普通文件處理,skip則是跳過該輸入,recurse則是遍歷目錄下的所有文件當做輸入文件進行處理
grep -d recurse ‘LISTEN’ netstat
附錄
正則表達式:
基本正則表達式:
- [a-z]:表示a-z的任何一個字符
- [A-Z]:表示A-Z的任何一個字符
- [0-9]:表示0-9的任意一個數字
- [A-Za-z0-9]:表示以上三個中的任意一個
基本的正則表達式在使用?, +, {, |, (, 和 )字符的時候需要使用 / 進行轉義,但是擴展的正則表達式不需要轉義
字符重複表示:
- ?:表示重複前面字符0-1次
- *:表示重複前面字符0-n次
- +:表示重複前面字符1-n次
- {n}:表示重複前面字符n次
- {n,}:表示重複前面字符n-m次
- {,m}:表示重複前面字符0-m次
- {n,m}:表示重複前面字符n-m次
grep的color配置:
在~/.bashrc文件中加兩行:
export GREP_COLOR=‘4;41’
source ~/.bashrc
export GREP_COLOR=‘a;b’ #默認是1;31,即高亮的紅色; 您可以根據自己的喜好設置不同的顏色;
-
a可以選擇:【0,1,4,5,7,8】
-
0 關閉所有屬性
-
1 設置高亮度
-
4 下劃線
-
5 閃爍
-
7 反顯
-
8 消隱
-
-
b可以選擇:【30-37或40-47】
-
30 black
-
31 red
-
32 green
-
33 yellow
-
34 blue
-
35 purple
-
36 cyan
-
37 white
-
30 — 37 設置前景色
-
40 — 47 設置背景色
-
更多問題可以加公衆號:代碼小棧,期待爲您解決更多問題