M20 – 1- 第三周博客(3):Linux上文本處理三劍客grep

Grep是一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹配的行打印出來。

1、作用

Linux系統中grep命令是一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹 配的行打印出來。grep全稱是Global Regular Expression Print,表示全局正則表達式版本,它的使用
權限是所有用戶

2、格式:

grep [OPTIONS] PATTERN [FILE...]
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]

3、選項

--color=auto: 對匹配到的文本著色顯示;
-v: 顯示不能夠被pattern匹配到的行;
-i: 忽略字符大小寫
-n:顯示匹配的行號
-c: 統計匹配的行數
-o: 僅顯示匹配到的字符串;
-q: 靜默模式,不輸出任何信息
-A #:after, 后#行
-B #: before, 前#行
-C #:context, 前后各#行
-e:實現多個選項間的邏輯or關系
grep –e ‘cat ’ -e ‘dog’ file
-w:整行匹配整個單詞
-E:使用ERE;相當于egrep

4、模式

分兩類:
基本正則表達式:BRE
擴展正則表達式:ERE (grep -E, egrep)

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

字符匹配:某個字符的匹配

. :匹配任意單個字符;
[] :匹配指定范圍內的任意單個字符
[^] :匹配指定范圍外的任意單個字符
[:digit:]:任意數字,相當于0-9
[:lower:]:任意小寫字母
[:upper:]: 任意大寫字母
[:alpha:]: 任意大小寫字母
[:alnum:]:任意數字或字母
[:space:]:空格
[:punct:]:標點符號

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

*:匹配前面的字符任意次,包括0次
貪婪模式:盡可能長的匹配
.*:任意長度的任意字符
\?:匹配其前面的字符0或1次
\+:匹配其前面的字符至少1次
\{m\}:匹配前面的字符m次
\{m,n\}:匹配前面的字符至少m次,至多n次
\{,n\}:匹配前面的字符至多n次
\{m,\}:匹配前面的字符至少m次

位置錨定:定位出現的位置

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

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

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

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

字符匹配:某個字符的匹配

. :匹配任意單個字符;
[] :匹配指定范圍內的任意單個字符
[^] :匹配指定范圍外的任意單個字符
[:digit:]:任意數字,相當于0-9
[:lower:]:任意小寫字母
[:upper:]: 任意大寫字母
[:alpha:]: 任意大小寫字母
[:alnum:]:任意數字或字母
[:space:]:空格
[:punct:]:標點符號

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

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

位置錨定:定位出現的位置

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

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

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

或者:一種,或兩種以上

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

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

(0)
AleenAleen
上一篇 2016-08-08
下一篇 2016-08-08

相關推薦

  • 15-2用戶系統資源配額

    用戶資源系統配額 在系統中,允許系統用戶使用存儲空間,但是不能限制的讓用戶隨意使用存儲空間,對用戶存儲空間的設定就是用戶資源系統配額。 下面以/home 為例,通常如果系統中有一定的用戶,會把用戶的家目錄作為一個單獨的分區,從而實現更好的管理。下面具體講解如何把用戶家目錄從根系統分區分離出來進行磁盤配額。 1、拿出一個未使用的分區,把用戶家目錄的數據拷貝到新…

    Linux干貨 2016-12-02
  • 馬哥教育網絡班22期+第7周課程練習

    1、創建一個10G分區,并格式為ext4文件系統; fdisk /dev/sdd n p 1 2048 +10G w (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl; mke2fs -t ext4 -b 2048 -m 2&nb…

    Linux干貨 2016-09-26
  • 8月11日shell編程腳本及課后作業

    shell腳本編程 本章內容 編程基礎 腳本基礎格式 變量 運算 條件測試 流程控制 函數 數組 高級字符串操作 高級變量 配置用戶環境 編程基礎 程序:指令+數據    程序編程風格:       過程式:以指令為中心,數據服務于指令   &nbs…

    Linux干貨 2016-08-15
  • 文件管理

    compress:壓縮命令 -d:解壓縮(=uncompress) -c:結果輸出到標準輸出,不刪除原文件 -v:顯示詳情 zcat:不解壓文件查看內容   gzip:壓縮命令 -d:解壓縮 -c:結果輸出到標準輸出,不刪除原文件 -#:1-9代表壓縮比,默認為6 zcat:不解壓文件查看內容   bzip2:壓縮命令 -k:保留原文件 …

    Linux干貨 2016-08-18
  • Ansible 詳細用法說明

    Ansible 一、概述 運維工具按需不需要有代理程序來劃分的話分兩類: agent(需要有代理工具):基于專用的agent程序完成管理功能,puppet, func, zabbix agentless(無須代理工具):基于ssh服務完成管理,ansible, fabric 二、簡介   Ansible是一個簡單的自動化運維管理工具,基于Python語言實現…

    2016-11-07
  • bash工作特性之命令執行狀態返回值和命令行展開的講解和實例

    命令執行狀態返回值 在Linux bash中可以用命令執行狀態返回值來判斷命令是否運行成功,而不需去關心命令返回的結果是多少。 bash通過狀態返回值來得到輸出結果; 成功:返回值 0 [root@localhost tmp]# ls aaa [root@localhost tmp]# mkdir $(date +%H-%m-%S) [root@localh…

    Linux干貨 2018-03-01
欧美性久久久久