文本處理工具之grep

                文本處理工具之grep

一、grep的簡介

1、grep是一個文本過濾器的工具,它根據用戶指定的模式(pattern)對目標文本進行匹配檢查,并將匹配的行打印到標準輸出或輸出重定向。

2、模式:由文本字符或正則表達式組成

3、正則表達式分兩類:

       基本正則表達式

       擴展正則表達式

二、grep工具

grep的基本語法

grep  [OPTIONS]  PATTERN  [FILE…]

選項:

    -i:忽略字符大小寫

    -v:顯示不能被模式匹配的行

    -o:僅顯示匹配的字符串

    -q:靜默模式,不輸出任何信息(多用于腳本)

    -c:顯示統計到的行數,等同于wc -l

    -e:指定多個搜索條件

    -A #:匹配到的后#行

    -B #:匹配到的前#行

    -C #:匹配到的前后個#行

    -E :是擴展正表達式   

    -n :表示顯示行號

三、基本正則表達式的元字符

    1、字符匹配:

       . :任意單個字符

       [] :匹配范圍內任意單個字符,(如:[abc]表示可以是a 或b或c中的任意一個)

       [^]:匹配范圍外的任意單個字符

       幾種常用的特殊的字符集:

       [:alnum:] 數字和字符

       [:alpha:] 英文大小寫字符 a-z A-Z

       [:lower:] 小寫字母

       [:upper:] 大寫字母

       [:space:] 專門匹配空格

       [:digit:] 十進制數字

       [:xdigit:]十六進制數字

       [:punct:] 標點符號

2、次數匹配

       * :表是其前字符任意次

       \?:表示其前字符0次或一次

       \+:表示其前字符至少一次

       \{m\}:表示其前字符m次

       \{m,n\}:表示其前字符至少m最多n次

       \{0,n\}:表示其前字符最多n次

       \{m,\}:表示其前字符至少m次

3、位置錨定:

   ^ :錨定行首 (如:“^root”表示以“root”字符串作為行的開頭)

   $ :錨定行尾 (如:“root$”表示以“root”字符串作為行的行尾)

   \<或\b:詞首錨定

       \>或\b:詞尾錨定

       ^$:表示空行,但不包含空白字符

       ^[[:space:]]*$:表示空行,包含空白字符

       \<PATTERN\>等同于\bPATTERN\b:表示匹配整個單詞

4、分組

   \(\)

   分組是將一個或多個字符綁定在一起,當作一個整體來處理(比如后向引用:\1 \2 …)。

   示例  \(adc\(xyz\)\)利用后向引用

         \1:表示第一個左括號以及與其匹配的右括號之間的匹配到的內容。本例中\1表示:abc\(xyz\)

         \2:表示第二個左括號以及與其匹配的右括號之間的匹配到的內容。本例中\1表示:xyz

5、基本正則表達式的使用

         1)顯示/etc/passwd中不以/sbin/nologin結尾的行

                文本處理工具之grep

         (2) 顯示/etc/fstab文件中以#號開頭的行

                文本處理工具之grep

         3)顯示root單詞在/etc/passwd的文件中出現的次數

                文本處理工具之grep

         4)找出當前系統上用戶名和其默認shell相同的用戶

                文本處理工具之grep

         (5)統計/etc/init.d/functions文件中每個單詞出現的次數,并統計出前十名

                文本處理工具之grep

四、擴展正則表達式

     1、字符匹配:

       . :任意單個字符

       [] :匹配范圍內任意單個字符,(如:[abc]表示可以是a 或b或c中的任意一個)

       [^]:匹配范圍外的任意單個字符

     2、次數匹配

       * :表是其前字符任意次

       ?:表示其前字符0次或一次

       +:表示其前字符至少一次

       {m}:表示其前字符m次

       {m,n}:表示其前字符至少m最多n次

       {0,n}:表示其前字符最多n次

       {m,}:表示其前字符至少m次

      

     3、位置錨定

        擴展正則表達式中的位置錨定和基本正則表達式相同

     4、分組

        ():與基本正則表達式相比去掉了“\”轉義,用法和基本正則表達式相同

     5、擴展正則表達式也可以用 “egrep”這個文本處理工具,它等同于 “grep -E”

        它倆的用法一致

     6、擴展正則表達式的使用

        1)取出路徑/etc/passwd的基名和路徑名

                文本處理工具之grep

 2)在/etc/passwd文件中以root開頭行,并且行內至少再有一個root單詞的行

          文本處理工具之grep

         

 (3)顯示/etc/fstab 文件中以#開頭其后跟了至少一個空白字符的行

                文本處理工具之grep

        

 

              

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

(0)
zqzq
上一篇 2017-05-06 19:46
下一篇 2017-05-06 22:11

相關推薦

  • 第七周:文件系統、raid、lvm和shell腳本練習

    1、創建一個10G分區,并格式為ext4文件系統;    (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl; [root@wlm ~]# fdisk /dev/sdb    #將/dev/sdb進行分區操作 D…

    Linux干貨 2016-11-07
  • Centos7上利用corosync+pacemaker+crmsh構建高可用集群

    一、高可用集群框架 資源類型:     primitive(native):表示主資源     group:表示組資源,組資源里包含多個主資源     clone:表示克隆資源     master/…

    Linux干貨 2016-05-29
  • sed使用詳解

    vim  ,sed 1.首先,sed作為一個流編譯器,它是對文本進行處理的,它和grep雖然都是對文本進行處理的,但是sed的處理機制和grep還是有很大的不同的,grep:文本過濾(模式:pattern)工具;grep, egrep, fgrep(不支持正則表達式搜索)sed:stream editor,文本編輯工具;awk:Linux上的實現g…

    Linux干貨 2016-08-11
  • linux基礎入門常識

    1、計算機的組成及功能 控制器:對程序規定的控制信息進行解釋,根據其要求進行控制,調度程序、數據、地址,協調計算機各部分工作及內存與外設的訪問等。 運算器:對數據進行各種算術運算和邏輯運算。 存儲:存儲程序、數據和各種信號、命令等信息。 輸入:將程序、數據、字符、控制命令等信息輸入到計算機進行處理。 輸出:將計算機處理過的數據或信號輸出出來。 2、linux…

    Linux干貨 2017-12-03
  • 第二十二周作業

    1、請描述本地文件系統和分布式文件系統的特點 本地文件系統 本地文件系統主要是指Ext2,Ext3,Btrfs,XFS這類,它們通常提供以下功能: 擴展性:隨著系統容量的增加保持性能,不隨容量變化而導致性能震蕩。比如一個目錄下的海量文件,在EXT2/3中由于目錄設計問題會導致較大的性能問題。再比如EXT2/3中的Metadata的占用和inode的劃分可能會…

    2017-08-06
  • ifconfig

    ifconfig 命令詳解

    Linux干貨 2018-02-10
欧美性久久久久