awk用法於教程

 注意正則表達式有些匹配字符與Shell中的通配符符號一樣,但含義卻不同。注意正則表達式有些匹配字符與Shell中的通配符符號一樣,但含義卻不同。

                   表1-1 

編輯工具

基本正則表達式

擴展正則表達式

grep

 

egrep

vi

 

sed

 

awk

 

1.1     基本正則表達式(Regular Expression

1-2列出了基本正則表達式及其對應的含義。
                         1-2

      字符

含義

c

匹配字母c

.

匹配任意單個字符

*

匹配前一個字符出現零次或多次

.*

匹配任意字符

[]

匹配集合中的任意單個字符,括號中爲一個集合

[x-y]

匹配連續的字串範圍

^

匹配字串的開頭

$

匹配字串的結尾

[^]

匹配否定,對括號中的集合取反

\

匹配轉義後的字串

\{n,m\}

匹配前一個字符重複nm

\{n,\}

匹配前一個字符重複至少n

\{n\}

匹配前一個字符重複n

\(\)

\(\)之間的內容存儲在“保留空間”,最大存儲9

\n

通過\1\9調用保留空間中的內容

 

2. 基本正則表達式案例

   提示:由於模版文件的內容在每個系統略有差異,以下案例的輸出結果可能有所不同。
  1. [root@centos6 ~]# cp /etc/passwd /tmp/           #複製模版文件 
  2. 查找包含root的行: 
  3. [root@centos6 ~]# grep root /tmp/passwd                           
  4. root:x:0:0:root:/root:/bin/bash 
  5. operator:x:11:0:operator:/root:/sbin/nologin 

查找:0:之間包含任意兩個字符的字串,並顯示該行(--color代表以顏色加亮顯示匹配的內容):

  1. [root@centos6 ~]# grep --color :..0: /tmp/passwd 
  2. root:x:0:0:root:/root:/bin/bash 
  3. sync:x:5:0:sync:/sbin:/bin/sync 
  4. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 
  5. halt:x:7:0:halt:/sbin:/sbin/halt 
  6. games:x:12:100:games:/usr/games:/sbin/nologin 
  7. avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin 

查找包含至少一個0的行(第一個0必須出現,第二個0可以出現0次或多次):

  1. (魚油輸出內容較多案例中僅爲部分輸出)
  2. [root@centos6 ~]# grep --color 00* /tmp/passwd       
  3. root:x:0:0:root:/root:/bin/bash                                        #該行有兩處匹配 
  4. sync:x:5:0:sync:/sbin:/bin/sync 
  5. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 
  6. halt:x:7:0:halt:/sbin:/sbin/halt 
  7. uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin 
  8. operator:x:11:0:operator:/root:/sbin/nologin 
  9. games:x:12:100:games:/usr/games:/sbin/nologin       #匹配0出現2次 
  10. gopher:x:13:30:gopher:/var/gopher:/sbin/nologin 
  11. ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin 
  12. avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin 
  13. avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin 
  14. 查找包含oot或ost的行: 
  15. [root@centos6 ~]# grep --color  o[os]t /tmp/passwd 
  16. root:x:0:0:root:/root:/bin/bash 
  17. operator:x:11:0:operator:/root:/sbin/nologin 
  18. postfix:x:89:89::/var/spool/postfix:/sbin/nologin 
  19. 查找包含0-9數字的行: 
  20. [root@centos6 ~]# grep –color [0-9] /tmp/passwd 
  21. root:x:0:0:root:/root:/bin/bash 
  22. bin:x:1:1:bin:/bin:/sbin/nologin 
  23. daemon:x:2:2:daemon:/sbin:/sbin/nologin 
  24. 查找包含f-q字母的行: 
  25. [root@centos6 ~]# grep --color  [f-q] /tmp/passwd 
  26. root:x:0:0:root:/root:/bin/bash 
  27. bin:x:1:1:bin:/bin:/sbin/nologin 
  28. 查找以root開頭的行: 
  29. [root@centos6 ~]# grep --color ^root /tmp/passwd 
  30. root:x:0:0:root:/root:/bin/bash 
  31. 查找以bash結尾的行: 
  32. [root@centos6 ~]# grep --color bash$ /tmp/passwd 
  33. root:x:0:0:root:/root:/bin/bash 
  34. 查找sbin/後面不跟n的行: 
  35. [root@centos6 ~]# grep --color sbin/[^n] /tmp/passwd 
  36. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 
  37. halt:x:7:0:halt:/sbin:/sbin/halt 
  38. 查找數字0出現1次2次的行: 
  39. [root@centos6 ~]# grep --color '0\{1,2\}' /tmp/passwd 
  40. root:x:0:0:root:/root:/bin/bash 
  41. sync:x:5:0:sync:/sbin:/bin/sync 
  42. 查找包含兩個root的行(注意,grep在使用\(\)過濾時,匹配條件必須使用引號): 
  43. [root@centos6 test]# grep --color "\(root\).*\1" /tmp/passwd 
  44. root:x:0:0:root:/root:/bin/bash 
  45. 查找包含root:開頭:root結尾的字串行: 
  46. [root@centos6 test]# grep --color "\(root\)\(:\).*\2\1" /tmp/passwd 
  47. root:x:0:0:root:/root:/bin/bash 
  48. 過濾文件的空白行: 
  49. [root@centos6 test]# grep ^$ /tmp/passwd 
  50. 過濾文件的非空白行: 
  51. [root@centos6 test]# grep -v ^$ /tmp/passwd 

1.2     擴展正則表達式(Extended Regular Expression
1. 
1-3列出了擴展正則表達式及其對應的含義。
                                       表1-3

字符

含義

{n,m}

等同於基本正則表達式的\{n,m\}

+

匹配前一個字符出現一次或多次

?

匹配前一個字符出現零次或一次

|

匹配邏輯或者,即匹配|前或後的字串

()

匹配正則集合

2.擴展正則表達式案例
由於輸出信息與基本正則表達式類似,這裏僅寫出命令而不再打印輸出信息。
查找數字0出現12次的行:

  1. [root@centos6 ~]# egrep --color '0\{1,2\}' /tmp/passwd 
  2. 查找包含至少一個0的行: 
  3. [root@centos6 ~]# egrep --color ‘0+’ /tmp/passwd 
  4. 查找包含root或者admin的行: 
  5. [root@centos6 ~]# egrep --color ‘(root|admin)’ /tmp/passwd 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章