1、基本用法------grep
為了使搜尋結果更方便地被我們看到通常一般先對grep進行別名的設定,即
alias grep='grep --color=auto'
grep 關鍵字 檔案
-w : 匹配整個單詞
-r : 迭代查詢,即在該目錄及子目錄下搜尋
-a # 顯示關鍵字行及向下的n行
-b # 顯示關鍵字行及向上的n行
-c # 顯示關鍵字行及向上n行和向下的n行
-e 關鍵字1 -e 關鍵字2 …… 多個關鍵字之間是或的關係
例1 找出檔案中包含eth的那行
[root@localhost ~]#cat test.sh
cat cat root dog hat dhjk
dog eth fgh ws lc hat jk
cek chech change wes wen root
linuc linux cut mimi wenwnen jk
[root@localhost ~]#
cat test.sh |grep -n 'eth'
2:dog eth fgh ws lc hat jk
例2 找出檔案中包含dog的行,忽略大小寫
[root@localhost ~]#cat test.sh |grep -i 'dog'
cat cat root dog hat dhjk
dog eth fgh ws lc hat jk
二、 與正規表示式結合的grep
. 表示任意內容
[mage] 指定內容的範圍 m或a或g或e
[^mage] 除m及a及g及e
[:alnum:] 字母和數字
[:alpha:] 代表任何英文大小寫字元,亦即a-z, a-z
[:lower:] 小寫字母[:upper:] 大寫字母
[:blank:] 空白字元(空格和製表符)
[:space:] 水平和垂直的空白字元(比[:blank:]包含的範圍廣)
[:cntrl:] 不可列印的控制字元(退格、刪除、警鈴...)
[:digit:] 十進位制數字[:xdigit:]十六進製制數字
[:graph:]可列印的非空白字元
[:print:] 可列印字元
[:punct:] 標點符號
* 表示前面的字元匹配任意次,可以0次,可以無限,貪婪模式
.* 表示任意內容任意長度
\? 表示前面的內容匹配0次或1次
\+ 表示前的的內容匹配1次以上
\匹配前面的字元n次
\匹配前面的字元至少m次,至多n次
\匹配前面的字元至多n次
\匹配前面的字元至少n次
^ 模式最左側
$ 模式最右側
^pattern$ 用於模式匹配整行
\《或\b 詞首錨定
\>或\b 詞尾錨定
\1 後向引用,1代表引用前面第乙個分組
\(\) 將乙個或多個字元捆在一起重複列出
例3 顯示/proc/meminfo檔案中以大小s開頭的行
[root@localhost ~]#grep -i ^s /proc/meminfo
swapcached: 0kb
swaptotal: 4194300kb
swapfree: 4194300kb
shmem: 2592kb
slab: 261068kb
sreclaimable: 182392kb
sunreclaim: 78676 kb
例4 找出「netstat -tan」命令的結果中以『listen』後跟任意多個空白字元結尾的行
[root@localhost ~]#netstat -tan|grep 'listen[[:space:]]*$'
tcp 0 0 0.0.0.0:36865 0.0.0.0:*listen
tcp 0 0 0.0.0.0:111 0.0.0.0:*listen
tcp 0 0 0.0.0.0:22 0.0.0.0:*listen
tcp 0 0 127.0.0.1:631 0.0.0.0:*listen
tcp 0 0 127.0.0.1:25 0.0.0.0:*listen
tcp 0 0 127.0.0.1:6010 0.0.0.0:*listen
tcp 0 0 :::53191 :::*listen
tcp 0 0 :::111 :::*listen
tcp 0 0 :::22 :::*listen
tcp 0 0 ::1:631 :::*listen
tcp 0 0 ::1:25 :::*listen
tcp 0 0 ::1:6010 :::* listen
例5 找出/etc/passwd使用者名稱同shell名的行
[root@localhost ~]#cat /etc/passwd |grep '^\(.*\):.*/\1$'
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
bash:x:501:501::/home/bash:/bin/bash
nologin:x:505:505::/home/nologin:/sbin/nologin
例6 利用df和grep,取出磁碟各分割槽利用率,並從大到小排序
root@localhost ~]#df |grep /dev/sd |grep -o '[0-9]\'% |sort -n -r
20%19%
1%
例7 使用egrep取出/etc/rc.d/init.d/functions中其基名
[root@localhost ~]#echo /etc/rc.d/init.d/functions/ |egrep -o "[^/]+/?$"
functions/
例8 使用egrep取出上面路徑的目錄名
[root@localhost ~]#echo "/etc/rc.d/init.d/functions" |egrep -o ".*/." |egrep -o ".*/"
/etc/rc.d/init.d/
例9 統計last命令中以root登入的每個主機ip位址登入次數
[root@localhost ~]#last |grep root |grep '\([0-9]\.\)\[0-9]\' -o |sort | uniq -c
1 172.18.250.118
21 172.18.250.203
1 172.18.251.174
2 172.18.251.53
例10 顯示ifconfig命令結果中所有ipv4位址
[root@localhost ~]#ifconfig |egrep -o "\<(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.)([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>"
172.18.251.84
172.18.255.255
255.255.0.0
192.168.248.129
192.168.248.255
255.255.255.0
127.0.0.1
255.0.0.0
Linux文字處理三劍客
grep 作用 文字搜尋工具,根據使用者指定的 模式對目標檔案逐步進行匹配檢查,列印匹配到的行 grep root etc passwd grep命令選項 grep user etc passwd v 顯示不被pattern 匹配的行 e 僅顯示匹配到的字串 grep user etc passwd...
linux文字處理三劍客
常用引數 v 顯示不能夠被匹配到的行 i 忽略大小寫字元 o 僅顯示匹配到的字串 q 靜默模式,不輸出任何資訊 a 後 行 b 前 行 c 前後各 行 e 使用ere,相當於egrep常用引數 n 只列印模式匹配的行 e 直接在命令列模式上進行sed動作編輯,此為預設選項 f 將sed的動作寫在乙個...
文字處理三劍客
文字處理三劍客 劍客一 grep 作用 行 過濾 用法 grep 正規表示式 檔案 路徑 grep e 擴充套件類正規表示式 檔案 路徑 劍客二 sed 用法 sed 選項 位址定位sed命令 檔案 路徑 sed 選項 正規表示式 sed命令 檔案 路徑 sed 選項 位址定位 正規表示式 sed命...