正則表達式基礎以及grep的簡單使用

正則表達式基礎以及grep的簡單使用

 

1,定義

正則表達式是你所定義的模式模板,Linux可以用它來過濾文本。Linux工具(比如grep、sed、gawk)能夠在處理數據時使用正則表達式對數據進行模式匹配。如果數據匹配模式,它就會被接受并進一步處理;如果數據不匹配,它就會被濾掉。

正則表達式基礎以及grep的簡單使用

2,正則表達式的原則

(1)正則表達式模式都區分大小寫。(2)可以使用空格,數字。(3)空格和其他字符并沒有什么區別。

3,特殊字符                                                                  

包括        * [  ] ^ $ ( ) \ + ? | { }   

       要使用特殊字符,必須轉義,在轉義字符時,需要在它前面加個特殊字符來告訴正則表達式引擎應該將接下來的字符當做普通的文本字符,這個特殊符號就是反斜線(\)。

4,錨字符                                                                   

        ^ 行首錨定

        $ 行尾錨定

正則表達式基礎以及grep的簡單使用

       \b  \b 匹配詞首和詞尾  

        \<     \> 匹配詞首和詞尾    

正則表達式基礎以及grep的簡單使用

5,grep 基本用法

       -v    取反,找出不包含關鍵字的行

       -i     忽略字符大小寫

       -n    顯示匹配的行號

       -c    統計匹配到的行數

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

       -w   匹配整個單詞

       -A   n匹配的前n行

       -B    n 關鍵字的后n行

       -C    n 關鍵字的前后各n行

正則表達式基礎以及grep的簡單使用

       -e    實現多個選項的邏輯或關系

正則表達式基礎以及grep的簡單使用

       -E     egrep   支持擴展的正則表達式

         -F     fgrep   不支持正則表達式

6,字符匹配規則

       .             配任意單個字符

       [abc]       匹配a,b,c中單個字符

       [^abc]     匹配除a,b,c之外的字符

       [:alnum:] 匹配數字和字符

       [:alpha:]  匹配英文大小寫字母a-z,A-Z

       [:lower:]  匹配小寫字母

       [:upper:]  匹配大寫字母

       [:space:]  匹配空格

       [:digit:]   匹配十進制數字

7,匹配次數

       *     匹配前面的字符任意次數,0至正無窮

       .*    匹配任意字符任意次數

       \?     匹配前面字符0次或者1次

       \+    匹配前面字符至少1次

       \{n\}       配前面字符n次

       \{m,n\}   匹配前面字符出現m至n次

       \{,n\}      匹配前面字符最多出現n次

       \{n,\}      匹配前面字符至少n次

8,擴展正則表達式egrep  

 次數匹配,和基本正則表達式類似,就是少了轉義字符(\)

*     匹配前面字符任意次

?    匹配前面字符0次或1次

+     匹配前面字符1次或多次

{m} 匹配前面字符m 次

{m,n}匹配前面字符m到n 次

9,使用管道(|

         管道允許你在檢查數據時,用邏輯或方式指定正則表達式引擎要用的兩個或者多個模式,如果任何一個模式匹配了數據文本,文本就通過,如果沒有模式匹配,則數據流文本匹配失敗。

正則表達式基礎以及grep的簡單使用

10,分組

 將匹配規則分成不同的組 使用 1 2 3..等數字去標識,便于后面使用同樣規則的時候可以直接飲用

   \(root\)\+\1

   \(string1\+\(string2\)*\)

   \1  string1\+\(string2\)*

   \2  string2

eg.找出/etc/passwd用戶名同shell名的行

   cat /etc/passwd | grep
“^\(\b[[:alnum:]]\+\b\):.*\1$”

   grep
“^\<\(.*\)\>.*\1$” /etc/passwd

cat /etc/passwd | egrep “^(\b[[:alnum:]]+\b):.*\1$”

正則表達式基礎以及grep的簡單使用

原創文章,作者:linux is not unix,如若轉載,請注明出處:http://www.www58058.com/72968

(1)
linux is not unixlinux is not unix
上一篇 2017-04-09 19:22
下一篇 2017-04-09 20:04

相關推薦

  • 第四周作業

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

    Linux干貨 2016-11-21
  • CentOS 7 安裝 mysql-5.7.14

    在centos7上安裝 路上遇過各種坑 把在centos7正確安裝mysql-5.7.14分享一下 1. CentOs7 默認的數據庫為MariaDB,先卸載MariaDB,否則安裝mysql,引起沖突 rpm -qa mariadb rpm -e –nodeps mariadb 2. 準備好工作環境 mkdir /application&nbs…

    Linux干貨 2017-05-07
  • 細說linux上的特殊權限位

    linux上的文件的權限 linux的哲學思想之一就是一切皆文件。這樣說來,每臺安裝了linux的主機上,就會有大量的文件。而另一方面,linux在安全方面有著極為出色的表現。眾所周知,linux是一個多用戶的系統,因此為一個文件加上合適的權限為顯得非常有必要了。linux上的基本權限我就不一一介紹了,請不熟悉的同學自行百度腦補。我們來說說linux上文件和…

    Linux干貨 2017-04-10
  • DevOps如何重構IT戰略

    翻譯: 至尊寶 原文: http://www.citeworld.com/article/2897738/development/how-devops-can-redefine-your-it-strategy.html?page=2   DevOps究竟是曇花一現還是你一直在尋找的競爭優勢?我們咨詢了一些專家,對于這種趨勢他們的想法是什…

    Python干貨 2015-03-26
  • 持續交付的Mesos與Docker導入篇

    變革這個詞在當今的數字化時代司空見慣,IT技術每過一段時間就會有一起革新,從WEB2.0、虛擬化、云計算、大數據、微架構、DevOps再到今天的容器Docker與Mesos。 Docker的出現方便了應用的測試、部署、與升級,其將各種應用程序和它們所依賴的運行環境打包成標準的Container/Image,進而發布到不同的平臺上運行。Docker的輕量級、快…

    Linux干貨 2016-07-10
  • N25-第七周作業

    第七周 1、創建一個10G分區,并格式為ext4文件系統; (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl; [root@zf ~]# fdisk /dev/sdb Command (m for help): n Command action e extended p primary partit…

    Linux干貨 2017-02-24
欧美性久久久久