天天看點

linux grep 基本正規表達式與擴充正規表達式使用解析

成功的秘訣很簡單=開始+堅持

接下來介紹grep和基本的正規表達式:

當大家需要從某個文本中,或者資訊中檢索資料時就要用上grep了

先介紹下grep的基本文法

grep [options] ‘pattern’ file

常用選項:

-i     不區分字元大小寫;

-v     反向選取,隻顯示不比對模式的行;

-o    隻顯示被模式比對到的字元串

-E     使用擴充的正規表達式 grep -E = egrep

--color=auto 把比對到的項,顯示紅色。

常用的也就這幾個,如果大家要擷取更多,請自行man grep。

元字元的介紹:

^    行首錨定符,用法格式 "^pattern"

$    行尾錨定符,用法格式 "pattern$"

.     比對任意單個字元

*    比對緊挨在其前面的字元任意次

.*   比對任意長度的任意字元

[ ]   比對指定範圍内的任意單個字元

\?   比對緊挨在其前面的字元0次或1次

\{m,n\}  比對其前面的字元至少m次至多n次

\{0,n\}   至多n次

\{m,\}    至少m次

\{m\}    精确m次

\<    錨定詞首,用法格式:\<pattern

\>    錨定詞尾,用法格式:pattern\>

接下來舉幾個例子:

1、顯示/proc/meminfo檔案中以不區分大小寫的s開頭的行;

#    grep -i   "^s"  /proc/meminfo

<a href="http://s3.51cto.com/wyfs02/M02/24/7F/wKiom1NQrZeQHRAOAADEDvUhq8A148.jpg" target="_blank"></a>

2、顯示目前系統不能登入shell的使用者;

#    grep "/sbin/nologin\&gt;" /etc/passwd

<a href="http://s3.51cto.com/wyfs02/M01/24/7F/wKioL1NQrv6xJJ0-AAGNBHGe0_Y580.jpg" target="_blank"></a>

看到沒,這裡用的\&gt;詞尾錨定。

3、顯示shell為bash,且其使用者ID号最小的使用者的使用者名;

#   grep "bash\&gt;" /etc/passwd |sort -t: -k3 | head -n 1

4、顯示/boot/grub/grub.conf檔案中以一個或多個空白字元開頭的行;

#    grep '^[[:space:]]\{1,\}

<a href="http://s3.51cto.com/wyfs02/M00/24/7F/wKiom1NQt9igpxrzAAEaz4srMJk740.jpg" target="_blank"></a>

5、ifconfig eth0 隻取出IP位址;

#    ifconfig eth0 | grep -o 'inet addr:[^[:space:]]* | cut -d: -f2

<a href="http://s3.51cto.com/wyfs02/M01/24/7F/wKioL1NQuaryKHEgAAB0PpPzA7s379.jpg" target="_blank"></a>

6、查找目前系統上名字為student的使用者帳戶相關資訊;

#    grep "^student:"  /etc/passwd

<a href="http://s3.51cto.com/wyfs02/M02/24/7F/wKioL1NQuy3QrpqGAAB4HIdE25U824.jpg" target="_blank"></a>

7、顯示/proc/cpuinfo中的processor開頭且後面跟了至少1個空白字元的行,而後統計相關行數。

# grep "^processor[[:space:]]\{1,\}" /proc/cpuinfo | cat -n

<a href="http://s3.51cto.com/wyfs02/M00/24/7F/wKiom1NQvZvgpKJJAACaUj-Maqg606.jpg" target="_blank"></a>

這裡後面管道也可以跟 wc -l 來統計行數。

好累啊!  今天就寫到這了,以後再做補充。

本文轉自qw87112 51CTO部落格,原文連結:http://blog.51cto.com/tchuairen/1397819

繼續閱讀