Linux運維 grep 家族

Linux運維相關(六)

學習Linux運維過程中的心得體會以及知識點的整理,方便我自己查找,也希望可以和大家一起交流。

—— grep 家族 ——

  • 1.grep

    • grep 是使用最廣泛的命令之一,用來對文本文件內容按行進行模式匹配查找。如果找到匹配模式的行, grep 將打印包含模式的行。
    • grep 有三種變形:
      • ① Grep : 標準 grep 命令,主要討論此格式。
      • ② Egrep: 擴展 grep,支持基本及擴展的正則表達式。
      • ③ Fgrep: 快速 grep,允許查找字符串而不是一個模式。這裏的"快速"並不是指速度快。
  • 2.grep 的用法

    • grep Usage: grep [OPTION] regular_expressions [filename1 …]
      • ① regular_expressions : 是正則表達式,一般用單引號把正則表達式括起來。當然,也可以不使用正則表 達式而使用字符串,使用字符串時一般用雙引號把字符串括起來。
      • ② filename1 … : 文件名列表,grep 將對這些指定的文件的內容進行匹配查找,如果文件名列表省略, grep 將從標準輸入讀取要匹配查找的內容。
    • grep 的常用選項:
      • -c 只輸出匹配的行的總數(count)。
      • -i 不區分大小寫(只適用於單字符)。
      • -h 查詢多個文件時,不顯示文件名。
      • -l 查詢多個文件時,只輸出包含匹配模式的文件的文件名。
      • -n 顯示匹配的行及行號。
      • -s 不顯示不存在或無匹配文件等錯誤信息(silence)。
      • -v 只顯示不包含匹配模式的行。
  • 3.grep 應用舉例

    • 查詢多個文件,可以使用*。比如:
      • grep "sort" *.doc // 在所有以 doc 爲後綴的文件中查找字符串"sort"
      • grep "linux" * // 在當前目錄下的所有文件中查找字符串"linux"
    • 精確匹配,可以在要匹配的字符串後加>。
      • grep "48\>" data.f // 可以匹配 48、1248、c48 This 等而不能匹配 481、c480
    • 反轉匹配
      • ps aux | grep "httpd" | grep -v "grep" // 查看正在運行的 httpd 進程
    • 匹配空行
      • grep -n '^$' myfile // 打印文件 myfile 中空行的行號
      • grep -v '^$' myfile // 去除文件 myfile 中的空行
  • 4.grep 可以使用或匹配模式的類名形式

    • 常見的匹配模式的類名形式:
      • [[:upper:]] 等價於 [A-Z] [[:lower:]] 等價於 [a-z] [[:digit:]] 等價於 [0-9] [[:alnum:]] 等價於 [0-9a-zA-Z] [[:space:]]
    • 舉例: grep '5[[:upper:]][[:upper:]]' data.f // 可以匹配包括 5AP196、5DF540 的行
  • 5.可以把要匹配的模式寫到一個文件中,然後使用 -f 選項,將該未能傳給 grep。

    • egrep -f grappats data.f // 要匹配的模式存放在文件 grappats 中
  • 6.可以在 grep 的模式字符串中使用(|)符號,意即“|”符號兩邊之一或全部,可以使用任意多"|",可同時使用 ^符號排除字符串

    • who | grep '(zqf|zqc|zqx)' // 查看是否 zqf zqc zqx 三者中是否有在線的
  • 7.如果傳遞給 grep 的文件名參數是不是一個普通文件而是一個目錄的話,要使用"-d"選項。

    • Usage: grep -d [ACTION] directory_name
    • ACTION : ACTION 用來指定對作爲輸入文件的目錄文件的處理方式,ACTION 有 3 個可選值:
      • ① read : 把目錄文件當作普通文件來讀取,是選項省略時的默認方式。
      • ② skip : 目錄將被忽略而跳過
      • ③ recurse : grep 以遞歸的方式讀取目錄下的每一個文件。等同於選項 “-r” 。
    • 舉例: grep -rl "eth0" /etc // 查看/etc 目錄中於"eth0"有關的文件的文件名
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章