linux運維開發(六)----------三劍客之grep

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 設置背景色

更多問題可以加公衆號:代碼小棧,期待爲您解決更多問題
代碼小棧

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章