文本三劍客之grep

文本編輯三劍客之grep

目錄

  • 一、正則表達式
  • 二、grep:文本過濾器

一、正則表達式

REGEXP:由一類特殊字符及文本字符所編寫的模式,其中有些字符(元字符)不表示字符字面上的意義,而表示控制或者通配的功能。
分類:

  • 基本正則表達式:BRE
  • 擴展正則表達式:ERE

元字符的分類:

  • 字符匹配
  • 匹配次數
  • 位置錨定
  • 分組

(1)基本正則表達式元字符

1>字符匹配

  • . :匹配任意單個字符
  • [ ]:匹配范圍內的單個字符
  • [^]:匹配指定范圍外的任意字符
  • \:轉義符,是特殊字符表示成本身的意思,而不是正則表達式的意思
  • 特定字符:和中括號的字符集合一塊使用,比如: [[:digit:]]=[0-9]
    文本三劍客之grep

2>匹配次數

匹配次數用在要指定次數的字符后面,用于指定前面的字符要出現的次數。

  • *:匹配前面的字符任意次,包括0次。(貪婪模式:經可能長的匹配)
  • .*:任意長度的任意字符
  • \?:匹配前面的字符0或者1次(部分匹配就行,如a\?b,ab、aab、amnb都符合)
  • +:匹配前面的字符者少1次
  • {n}:匹配前面的字符n次
  • {m,n}:匹配前面的字符至少m次,至多n次
  • {,n}:匹配前面的字符至多n次
  • {n,}:匹配前面的字符至少n次

3>位置錨定

定位出現的位置

  • ^:行首錨定,用于模式最左側
  • $: 行尾錨定,用于模式最右側
  • ^pattern$:用于模式匹配整行

    • ^$:空白行
    • ^[[:space:]]$:空白行
  • \<或者\b:詞首錨定,用于單詞模式的左側
  • \>或者\b:詞尾錨定,用于單詞模式右側
  • \<pattern>:匹配整個單詞

4>分組

分組: () 將 將 一個或多個字符捆綁在一起,當作一個整體進行處理,如:(root)+

  • 分組 括號中的模式匹配到的內容會被正則表達式引擎記錄于內部的變量中,這些變量的命名方式為: \1, \2, \3, …
  • \1 表示從左側起第一 個左括號以及與之匹配右括號之間的模式所匹配到 的字符
  • 后向引用:引用前面的分組括號中的模式所 匹配字符,而非模式本身
  • 示例 :

    \(string1\+\(string2\)*\)
    \1  :string1\+\(string2\)*
    \2  :string2

(2)擴展正則表達式的元字符

用法

egrep = grep -E
egrep [OPTIONS] PATTERN [FILE…]

1>字符匹配

  • . 任意單個字符
  • [] 指定范圍的字符
  • [^] 不在指定范圍的字符

2>次數匹配

  • *:匹配前面字符任意次
  • ?:0 或1次
  • +:1 次或多次
  • {m} :匹配m次 次
  • {m,n} :至少m ,至多n次

3>位置錨定

  • ^ : 行首
  • $ : 行尾
  • \<, \b : 語首
  • \>, \b : 語尾

4>分組

  • ()
    后向引用:\1, \2, …

5>或者

  • | :或者
  • 實例:

    a|b: a 或b
      C|cat: C 或cat
      (C|c)at:Cat 或cat

二、grep

根據模式搜索文本,并將符合模式的文本顯示出來。
pattern(模式):文本字符和正則表達式組合而成的匹配條件

用法

grep [OPTIONS] PATTERN [FILE…]

選項

  • -i : 查找時忽略大小寫
  • –color:顯示顏色(Centos7是別名)
  • -v: 顯示未被匹配到的行
  • -o:只顯示匹配到的行
  • -e:實現多個選項間的邏輯關系or關系
  • -n:顯示匹配的編號
  • -c:統計匹配的字符串
  • -q:靜默模式,不輸出任何信息
  • -w:整行匹配整個單詞
  • -A #:after,匹配到字符的前邊#行也輸出到顯示器上
  • -B #:before,匹配到字符的后邊#行也輸出到顯示器上
  • -C #:context,匹配到字符的前后邊各#行也輸出到顯示器上
  • -F:相當于使用fgrep,fgrep不支持正則表達式
  • -E:相當于egrep,egrep支持正則表達式

原創文章,作者:oranix,如若轉載,請注明出處:http://www.www58058.com/71725

(0)
oranixoranix
上一篇 2017-03-26
下一篇 2017-03-26

相關推薦

  • LVS負載均衡WordPress

    LVS:        LVS是四層協議的開源負載均衡器,工作在netfilter框架INPUT鏈中,它根據不同的算        法將用戶的請求調度給后端服務器,它不受sockt套接字文件限制,性能比nginx七層       …

    Linux干貨 2017-05-18
  • linux 文本處理工具 grep cut sort等

    linux day 7 間歇性回憶 自動屬于這個組 是  SGID 的功能 chmod g+s /data/testdir setfacl —m g:g2:rwx /data/testdir setfacl -m b:g:g2:rwx /data/testdir setfacl -m d:g:g3:r testdir chmod o= testdi…

    Linux干貨 2016-08-08
  • Linux 性能監控、測試、優化工具

    Linux 平臺上的性能工具有很多,眼花繚亂,長期的摸索和經驗發現最好用的還是那些久經考驗的、簡單的小工具。系統性能專家 BrendanD. Gregg 在最近的 LinuxCon NA 2014 大會上更新了他那個有名的關于 Linux 性能方面的 talk (Linux Performance Tools) 和幻燈片。    和 Br…

    Linux干貨 2015-03-03
  • man,男人的使用方法

        Linux中有個很強大的男人,這個男人就是man。任何不懂得命令和或者配置文件我們都可以去man,所以請深愛這個男人;     我們輸入 man ls,它會在最左上角顯示“LS(1)”,在這里,“LS”表示手冊名稱,而“(1)”表示該手冊位于第一節章,同樣,我們輸入“ma…

    Linux干貨 2016-07-26
  • Linux Sysadmin–part3

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現 #!/bin/bash for i in `cut -d’:’ -f7 /etc/passwd`;do if [ $i == “/sbin/nologin…

    2017-09-19
  • Linux程序包管理之RPM

    Linux程序包管理之RPM RPM概念 rpm是什么 RPM 是Ret Hat Package Manager(RPM軟件包管理器)的縮寫,遵循GPL協議,可以運行在各種Linux上,公認的行業標準。 rpm干什么 對于終端用戶來說 簡化了Linux系統的安裝、卸裝、更新和升級的過程,用命令完成 對于開發者來說 RPM允許把軟件編碼包裝成源代碼和程序包提供…

    Linux干貨 2016-11-22
欧美性久久久久