文本三劍客之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 13:03
下一篇 2017-03-26 14:37

相關推薦

  • N25-第四周作業

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 [root@localhost ~]# cp -r /etc/skel /home/tuser1 [root@localhost ~]# ls …

    Linux干貨 2017-01-03
  • locate、find命令使用總結

    一、簡介    在linux系統中存在"一切皆文件"的說法,這就足以說明文件的重要性,因此查找文件也是我們必須要掌握的技能。這時候熟練使用locate、find命令也就顯得至關重要。尤其是find命令常用于日常工作中如安裝完某個軟件之后要查看這些軟件的安裝配置路徑,或是需要按指定條件直接查找我們需要操作的文件。因此更需…

    Linux干貨 2015-08-31
  • N25-第四周

    一、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。     [root@localhost ~]# cp -r /etc/skel /home/tuser1      [root@localhost ~]# chmo…

    Linux干貨 2017-01-09
  • Linux Cluster之LVS

    一、Linux Cluster 基礎: Cluster:計算機集合為解決某個特定問題組合起來形成的單個系統 Linux Cluster類型: LB(Load Banlancing):負載均衡 HA(High Availability):高可用。提高服務可用性,避免出現單點故障 HP(High Performance):高性能 可用性衡量公式: A=MTBF/…

    2016-11-02
  • linux 權限相關知識

    linux day 6     用戶、組和權限 1.Linux用戶:Username/UID         管理員:root, 0         普通用戶:1-65535             …

    Linux干貨 2016-08-08
  • DNS and BIND 配置指南

    前言     說來接觸Linux也有一年了,BIND是我曾經學習RH系Linux接觸的第一個服務,對我有著莫大的意義,當初差點因為這個服務難以配置而放棄Linux,今天學完馬哥的bind相關系列視頻之后,寫一篇DNS and BIND的基礎到進階。 一、DNS的基礎知識 DNS是什么? DNS(Domain Name …

    Linux干貨 2016-03-21
欧美性久久久久