shell三劍客介紹及實例


Linux三劍客指的是grep、sed、awk,配合正則表達式使用就非常強大,筆者個人感覺會使用普通的場景就足夠工作中適用了,其中grep擅長查找功能,sed擅長取行和替換。awk擅長取列,筆者分別針對這些功能列舉語法以及實際案例。新手入門,如有問題,歡迎指正 ~ 

 

最開始,先介紹一下管道的概念,| 這個豎線就是管道的意思,后文中會持續用到該符號,作用就是將前一個命令的輸入輸送給 | 后面的命令,可以進行多重管道,例如:

一、grep

  grep作用是篩選,查詢

  1. 語法規則

  Usage: grep [選項]... 匹配項 [文件]...

  支持的正則 描述

   

  -E,--extended-regexp 模式是擴展正則表達式(ERE)

  -e,--regexp=PATTERN 使用模式匹配,可指定多個模式匹

  -f,--file=FILE 從文件每一行獲取匹配模式

  -i,--ignore-case 忽略大小寫

  -w,--word-regexp 模式匹配整個單詞

  -x,--line-regexp 模式匹配整行

 

  輸出控制 描述

  -m,--max-count=NUM 輸出匹配的結果 num 數

  -n,--line-number 打印行號

  -H,--with-filename 打印每個匹配的文件名

  -h,--no-filename 不輸出文件名

  -o,--only-matching 只打印匹配的內容

  -q,--quiet 不輸出正常信息

  -s, --no-messages 不輸出錯誤信息

  -r,--recursive 遞歸目錄

  -c,--count 只打印每個文件匹配的行數

  --include=FILE_PATTERN 只檢索匹配的文件

  --exclude=FILE_PATTERN 跳過匹配的文件

  --exclude-from=FILE 跳過匹配的文件,來自文件模式

  --exclude-dir=PATTERN 跳過匹配的目錄

  -v,--invert-match 打印不匹配的行

  

  內容行控制 描述
  -B,--before-context=NUM 打印匹配的前幾行

  -A,--after-context=NUM 打印匹配的后幾行

  -C,--context=NUM 打印匹配的前后幾行

  --color[=WHEN], 匹配的字體顏色

 

    2. 案例

  # 很常用的使用 grep 篩選 目前服務器 使用的java tomcat nginx進程

  

 

 

  # 查詢日志關鍵詞 -e 達標多個條件

 

  

 

  #  輸出查詢內容后5行的日志 

 

  

 

 

   #   通過正則來篩選結果 

   #   查詢以 ACTIVITY 開頭的日志

  

   #   查詢所有出現的時間  

  

   #  查詢出所有符合條件的IP地址

  

 

二、sed

  sed作用是過濾和替換文本。

  1. 語法規則 

  sed [選項] '地址 命令' file 

  選項 描述
  -n 不打印模式空間
  -e 執行腳本、表達式來處理
  -f 執行動作從文件讀取執行
  -i 修改原文件
  -r 使用擴展正則表達式

  地址 描述
  first~step 步長,每 step 行,從第 first 開始
  $ 匹配最后一行
  /regexp/ 正則表達式匹配行
  number 只匹配指定行
  addr1,addr2 開始匹配 addr1 行開始,直接 addr2 行結束
  addr1,+N 從 addr1 行開始,向后的 N 行
  addr1,~N 從 addr1 行開始,到 N 行結束

  命令 描述
  s/要替換的內容/替換成的內容/ 替換字符串
  p 打印當前模式空間
  P 打印模式空間的第一行
  d 刪除模式空間,開始下一個循環
  D 刪除模式空間的第一行,開始下一個循環
  = 打印當前行號

  2. 案例

   #  替換輸入內容(其中不以g結尾是替換每行中的第一個"11",否則就是替換所有的"11")

  

 

  # 替換文件內容並覆蓋(-i 參數 代表替換文件內容)

  

三、awk

  awk是一個處理文本的編程語言工具,能用簡短的程序處理標准輸入或文件、數據排序、計算以及生成報表等等。

  1. 語法規則 

  基本的命令語法:awk option 'pattern {action}' file

  其中 pattern 表示 AWK 在數據中查找的內容,而 action 是在找到匹配內容時所執行的一系列命令。花括號用於根據特定的模式對一系列指令進行分組。

  選項 描述
  -f program-file 從文件中讀取 awk 程序源文件

  -F fs 指定 fs 為輸入字段分隔符

  -v var=value 變量賦值

  pattern (匹配模式)

  /regular expression/ 為每個輸入記錄匹配正則表達式

  pattern && pattern 邏輯 and,滿足兩個模式

  pattern || pattern 邏輯 or,滿足其中一個模式

  ! pattern 邏輯 not,不滿足模式

  

  BEGIN{ } 給程序賦予初始狀態,先執行的工作

  END{ } 程序結束之后執行的一些掃尾工作

  2. 案例

   #  輸出指定列 

   

 

   # 指定分隔符 

  

 

 

   # BEGIN END的使用(可以用作格式化輸出,也可以在其中做一些初始化,以及收尾的工作)

   #  格式化輸入

  

 

  #  初始化分隔符和換行符,最后列數與記錄數

  

 

   其中: FS 輸入字段分隔符,默認是空格或制表符

       RS 輸入記錄分隔符,默認是換行符\n

       NF 統計當前記錄中字段個數

       NR 統計記錄編號,每處理一行記錄,編號就會+1

  #  使用正則的場景(篩選出符合條件的列,按照默認空格切分后,輸出第三列)

  

 

寫在文末:列舉了這么多,實際都是想象中的用法,實際工作中我目前只用到了 grep的簡單場景,如有啥問題,請多包涵【狗頭】

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM