成功的秘訣很簡單=開始+堅持
接下來介紹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\>" /etc/passwd
<a href="http://s3.51cto.com/wyfs02/M01/24/7F/wKioL1NQrv6xJJ0-AAGNBHGe0_Y580.jpg" target="_blank"></a>
看到沒,這裡用的\>詞尾錨定。
3、顯示shell為bash,且其使用者ID号最小的使用者的使用者名;
# grep "bash\>" /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