llinux文本處理工具

grep (global search regular expression(RE) and print out the line,全面搜索正則表達式並把行打印出來)是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行打印出來。linux

[options]主要參數:
-c:只輸出匹配行的計數。
-I:不區分大 小寫(只適用於單字符)。
-h:查詢多文件時不顯示文件名。
-l:查詢多文件時只輸出包含匹配字符的文件名。
-n:顯示匹配行及 行號。
-s:不顯示不存在或無匹配文本的錯誤信息。
-v:取反
grep:
llinux文本處理工具正則表達式

[root@centos7 ~]#grep -i "^S" /proc/meminfo
[root@centos7 ~]#grep -v "bash$" /etc/passwd
[root@centos7 ~]#grep '\<rpc\>' /etc/passwd|cut -d: -f7
/sbin/nologin
正則表達式:
選項與參數:
 --color=auto: 對匹配到的文本着色顯示
 -v: 顯示不被pattern匹配到的行
 -i: 忽略字符大小寫
 -n:顯示匹配的行號
 -c: 統計匹配的行數
 -o: 僅顯示匹配到的字符串
 -q: 靜默模式,不輸出任何信息
 -A #: after, 後#行
 -B #: before, 前#行
 -C #:context, 先後各#行
 -e:實現多個選項間的邏輯or關係 grep –e ‘cat ’ -e ‘dog’ file
 -w:匹配整個單詞
 -E:使用ERE ,egrep
 -F:至關於fgrep,不支持正則表達式
^ 錨定行的開始 如:'^grep'匹配全部以grep開頭的行。 shell

$ 錨定行的結束 如:'grep$'匹配全部以grep結尾的行。 express

. 匹配一個非換行符的字符 如:'gr.p'匹配gr後接一個任意字符,而後是p。centos

  • 匹配零個或多個先前字符 如:'grep'匹配全部一個或多個空格後緊跟grep的 行。 .一塊兒用表明任意字符。
  • [] 匹配一個指定範圍內的字符,如'[Gg]rep'匹配Grep和grep。bash

[^] 匹配一個不在指定範圍內的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一個字母開頭,緊跟rep的行。 app

(..) 標記匹配字符,如'(love)',love被標記爲1。ide

\ 錨定單詞的開始,如:'\匹配包含以grep開頭的單詞的行。函數

\> 錨定單詞的結束,如'grep\>'匹配包含以grep結尾的單詞的行。工具

x{m} 重複字符x,m次,如:'0{5}'匹配包含5個o的行。

x{m,} 重複字符x,至少m次,如:'o{5,}'匹配至少有5個o的行。

x{m,n}重複字符x,至少m次,很少於n次,如:'o{5,10}'匹配5--10個o的行。

\w 匹配文字和數字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G後跟零個或多個文字或數字字符,而後是p。

\b 單詞鎖定符,如: '\bgrep\b'只匹配grep。
取函數名稱
[root@centos6 ~]#grep -o "^[[:alnum:]_]+[[:space:]]*()" /etc/init.d/functions
再就是分組總體,這是一個或的意思
[root@centos6 ~]#echo axx bxx cxx |grep "(a|b|c)xx"
axx bxx cxx

llinux文本處理工具
(a..b)
a12b
axyb
a12b
後向引用
llinux文本處理工具
llinux文本處理工具
llinux文本處理工具
後向引用就是第二個匹配和第一個同樣
做業:
一、顯示三個用戶root、mage、wang的UID和默認shell

[root@centos7 app]#grep -E "^(root|mage|wang)\b" /etc/passwd

二、找出/etc/rc.d/init.d/functions文件中行首爲某單詞(包括下劃線)後面跟一個小括號的行
三、[root@centos7 app]#egrep "[[:alnum:]_]+()" /etc/rc.d/init.d/functions
四、
三、使用egrep取出/etc/rc.d/init.d/functions中其基名
[root@centos7 app]#echo "/etc/init.d/functions" |egrep -o "[^/]+/?$"

四、使用egrep取出上面路徑的目錄名
五、[root@centos7 app]#echo "/etc/rc.d/init.d/functions"|egrep -o "^/./\b"
六、
五、統計last命令中以root登陸的每一個主機IP地址登陸次數
last |grep ^root |egrep -o "([0-9]{1,3}.){3}[0-9]{1,3}" |sort |uniq -c
六、[root@centos7 app]#last |grep "root"|egrep -o "([0-9]{1,3}.){3}[0-9]{1,3}"|sort -n|head -n1
七、
六、利用擴展正則表達式分別表示0-九、10-9九、100-19九、200-24九、250-255
[0-9],[1-9][0-9],1[0-9][0-9],2[0-4][0-9],25[0-5]
七、顯示ifconfig命令結果中全部IPv4地址
八、[root@centos7 app]#ifconfig|egrep -o "([0-9]{1,3}.){3}[0-9]{1,3}"
九、
八、將此字符串:welcome to magedu linux 中的每一個字符去重並排序,重複次數多的排到前面
九、[root@centos7 app]#echo "welcomme to magedu linux" |grep -o "[[:alpha:]]"|sort |uniq -c|sort -n
十、
[root@centos7 app]#echo "welcomme to magedu linux" |grep -o "[[:alpha:]]"|sort |uniq -
九、用正則表達式表示出QQ號
十、egrep [0-9]{5,10}
十、用正則表達式表示出×××號
十一、[root@centos7 app]#echo "36042919891003193X" |egrep -o [0-9]{17}[A-Z]
十二、用正則表達式表示手機號
1三、root@centos7 app]#echo "13169917543"|egrep -o "^1[3|4|5|7|8][0-9]{9}$"
1四、
1五、十二、用正則表達式表示郵箱: x@y.z.m
[root@centos7 app]#echo "-7yin1
2@vip.qq.xom"|egrep "[[:alnum:]_/]{5,15}@([[:alnum:]]{0,5}.)?[[:alnum:]]{0,5}.[[:alnum:]]{2,3}"-7yin12@vip.qq.xom

相關文章
相關標籤/搜索