Linux文本處理三劍客及正則表達式

該章主要介紹正則表達式的使用方法

9

Linux 文本處理三劍客

grep:文本過濾工具(grep ;? egrep? ; fgrep)

grep :支持標準輸入(例如:grep? abc? 回車后輸入內容,可檢測出帶有abc的行)

-v? :顯示不被patter匹配的行

-i?? : 忽略大小寫

-n? :顯示出行號

-c? :統計匹配的行的數量

-q? :靜默模式,不輸出任何信息?? echo? $??? //可檢測出是否查找到信息(0查找到)

-o? :直接顯示匹配到的字符串

-A? :顯示出包含關鍵字的后續幾行

-B? : 顯示出包含關鍵字的前幾行

-C? : 顯示出包含關鍵字的前后幾行

-e? :代表或的關系(例如:-e? wang? -e? root?? //過濾出wang或mage? 的行)

-w? :匹配整個單詞

-E?? :(egrep)? 支持擴展的正則表達式

-F?? :(fgrep)? 不支持正則表達式

 

正則表達式(REGEXP:(匹配的是字符串)

正則表達式引擎:采用不同算法,檢查處理正則表達式的軟件模塊PCRE

man 7 regex??? //查看正則表達式的格式

元字符分類:字符匹配、匹配次數、位置錨定、分組

一.基本正則表達式(BRE

字符匹配

.??????? 匹配任意單個字符

[]?????? 匹配指定范圍內的任意一個字符

[^]???? 匹配指定范圍外的任意一個字符??????? [:print:]?????? 可打印字符

[:upper:]?? 任意大寫字母??????????? [:blank:]??? 空白字符(空格和制表符)

[:lower:]?? 任意小寫字母??????????? [:space:]??? 水平和垂直的空白字符

[:digit:]???? 任意數字???????????????? [:cntrl:]?? 不可打印的控制字符(退格、刪除、警鈴)

[:alpha:]???? 任意大小寫字母?????? [:puncct:]??? 標點符號

[:alnum:]?? 任意數字或字母??????? [:graph:]????? 可打印的非空白字符

grep? -o?? [[:digit:]]?? /etc/centos-release? |head –n1??? //取出centos版本號6或7

 

匹配次數

*?? ?匹配前面的字符任意次,包括0次

.*?? 匹配任意長度的一個字符

\??? 前面的字符重復0次或1次

\+?? 前面的字符至少1次以上

\{n\}??? 匹配前面的字符n次

\{m,n\}?? 匹配前面的字符至少m次,至多n次

\{,n\}?? 匹配前面的字符至多n次

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

grep? -o? “ [0-9]\+”?? /etc/centos-release? |head –n1??? //取出版本號

ifconfig ens32? |grep? ” netmask”? | grep -o “[0-9.]\{7,\}” |head -n1?? //取出ip地址

ifconfig ens32? |grep? ” netmask”? | grep -o “[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}” |head -n1

ifconfig ens32? |grep -o “inet [0-9.]\+”? |cut -d” ” -f2??? //取IP地址

df | grep sda |grep -o “[0-9]\{1,3\}%”|grep -o “[0-9]\+” |sort -nr? |head -n1? //分區

 

位置錨定

^??? 行首錨定,用于模式的最左側

$??? 行尾錨定,用于模式的最右側

^PATTERN$???? 用于模式匹配整行

^$?? 空行

^[[:space:]]*$??? 空白行

\<?? 或? \b? 詞首錨定,用于單詞模式的左側

\>? 或? \b? 詞首錨定,用于單詞模式的右側

\<PATTERN\>?? 匹配整個單詞

grep? -v?? ^[[:space:]]*$??? f1???? //過濾文件的空白行

 

分組:

\(\)? 將一個或多個字符捆綁在一起,當做一個整體進行處理

\1??? 表示從左側起第一個括號以及與之匹配右括號之間的模式所匹配到的字符

反向引用:引用前面分組括號中的模式所匹配字符,并非模式本身

\|? 或?? (例如: a\|b???? ;?? (C\|c)at))

grep “^\(.*\):.*/\1$”? /etc/passwd??? //取出前后單詞一樣的行

 

二.擴展正則表達式(ERE)

次數匹配

*??? 匹配前面字符任意次

??? ?0或1次

+?? 1次或多次

{m}?? 匹配m次

{m,n}:?? 至少m,至多n次

位置錨定

^??? 行首錨定,用于模式的最左側

$??? 行尾錨定,用于模式的最右側

\<?? 或? \b? 詞首錨定,用于單詞模式的左側

\>? 或? \b? 詞首錨定,用于單詞模式的右側

分組:

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

后向引用:? \1? ,? \2

或 者: (例如: a|b???? ;?? (C|c)at))

echo /etc/rc.d/init.d/functions? |egrep -o? “[^/]*/?$”?? //取基名

[0-9]?????? 0-9

[1-9][0-9]????? 10-99

1[0-9][0-9]????? 100-199

2[0-4][0-9]?????? 200-249

25[0-5]?????????? 250-255

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/95050

(1)
qljqlj
上一篇 2018-04-06 20:02
下一篇 2018-04-06 20:28

相關推薦

  • 學習筆記(5)

    學習筆記(5)

    Linux筆記 2018-04-22
  • sed作業

    編程基礎 程序:指令+數據程序編程風格:過程式:以指令為中心,數據服務于指令對象式:以數據為中心,指令服務于數據shell程序:提供了編程能力,解釋執行 程序的執行方式 計算機:運行二進制指令編程語言:低級:匯編高級:編譯:高級語言–>編譯器–>目標代碼?java,C#解釋:高級語言–>解釋器&#8211…

    2018-04-15
  • Linux程序包管理

    Linux程序包管理 rpm rpm命令是RPM軟件包的管理工具。rpm原本是Red Hat Linux發行版專門用來管理Linux各項套件的程序 語法 rpm(選項)(參數) rpm {-i|–install} [install-options] PACKAGE_FILE … rpm {-U|–upgrade} [install-options] …

    Linux筆記 2018-04-03
  • 05linux葵花寶典–linux軟件安裝、計劃任務和sed流編輯

    簡要介紹了紅帽系列發行版軟件安裝工具rpm、yum的使用,at、crontab等計劃任務命令的使用,以及sed命令使用

    Linux筆記 2018-04-03
  • Linux系統軟件包管理介紹

    Linux發行版中附帶有成千上萬的可用包,其中包括了Internet工具、開發工具、辦公工具、游戲等,如果你沒有選擇完整安裝,則只會安裝這些包的“子集”,如何刪除不想要的包,如何安裝遺漏的包,學習LInux系統的軟件包管理將解決你的這些問題

    2018-04-20
欧美性久久久久