grep 例子

grep 例子

索引出小寫字母所在的行

[root@lb03 ~]# grep  '[[:lower:]]'  passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

全部的大寫字母

[root@lb03 ~]# grep  '[[:upper:]]'  passwd 
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin

全部的大小寫字母

[root@lb03 ~]# grep  '[[:alpha:]]'  passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync

全部的數字

[root@lb03 ~]# grep  '[[:digit:]]'  passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync

全部的小寫字母與數字

[root@lb03 ~]# grep  '[[:alnum:]]'  passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin

全部的特殊符號

[root@lb03 ~]# grep  '[[:punct:]]'  passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

全部的空白字符

[root@lb03 ~]# grep  '[[:space:]]'  passwd 
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin

選項:

參數 解釋
-i 忽略大小寫
-v 排除
-n 顯示過濾出來的內容所在文件的行號
-c 統計過濾出來的總行數
-w 精確匹配單詞
-o 只顯示過濾出來的內容
-E 支持擴展正則
-r 遞歸過濾
-R 遞歸過濾
-A 顯示出過濾的出來的內容向下多少行
-B 顯示出過濾的出來的內容向上多少行
-C 顯示出過濾的出來的內容向上或向下多少行

忽略大小寫

[root@lb03 ~]# grep  -i  'root'  passwd 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

[root@lb03 ~]# echo 'ROOT'  >> passwd
[root@lb03 ~]# grep  -i  'root'  passwd 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
ROOT

統計過濾出來的行數

[root@lb03 ~]# grep  -ic  'root'  passwd 
3

顯示統計出來的行號

[root@lb03 ~]# grep  -in  'root'  passwd 
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
22:ROOT

選擇不含 /sbin/nologin 的行

[root@lb03 ~]# grep -v  '/sbin/nologin'  passwd
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
ROOT

精確匹配一個單詞

[root@lb03 ~]# echo 'roott'  >> passwd
[root@lb03 ~]# grep  -i  'root'  passwd 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
ROOT
roott
[root@lb03 ~]# grep  -iw  'root'  passwd 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
ROOT

只顯示搜索出來的內容

[root@lb03 ~]# grep  -o  'root'  passwd 
root
root
root
root
root

遞歸過濾

[root@lb03 ~]# grep -r   'root'  ./*
./anaconda-ks.cfg:rootpw --iscrypted $6$uxSmIs.46F1YbJYk$W0p9dIjeZPPe556u5YJGhQvOQyEdTk2Q9pHELzfEvDFfUXbKSiyUB9RDAPsfpzSj9BoBXMoyYP87m2qv5xW56/
./anaconda-ks.cfg:pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
./data/oldboy.txt:root
./data/oldboy.sh:root
./passwd:root:x:0:0:root:/root:/bin/bash
./passwd:operator:x:11:0:operator:/root:/sbin/nologin
./passwd:roott

顯示 存在adm字符的行 和上面2行

[root@lb03 ~]# grep -n -A 2 'adm'  passwd 
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5-lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6-sync:x:5:0:sync:/sbin:/bin/sync

顯示 adm存在行 和 下面2行

[root@lb03 ~]# grep -n -B 2 'adm'  passwd 
2-bin:x:1:1:bin:/bin:/sbin/nologin
3-daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
​```bash

## 顯示adm存在的行 和 -A -B 
​```bash
[root@lb03 ~]# grep -n -C 2 'adm'  passwd 
2-bin:x:1:1:bin:/bin:/sbin/nologin
3-daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5-lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6-sync:x:5:0:sync:/sbin:/bin/sync

過濾以r開頭的行

[root@lb03 ~]# grep  '^r'  passwd 
root:x:0:0:root:/root:/bin/bash
roott

過濾以t爲結尾的行

[root@lb03 ~]# grep  't$'  passwd 
halt:x:7:0:halt:/sbin:/sbin/halt
roott
[root@lb03 ~]# vim passwd

過濾空行

[root@lb03 ~]# grep  '^$'  passwd

過濾任意一個字符

[root@lb03 ~]# grep '.'  passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

匹配全部

[root@lb03 ~]# grep  '.*'  passwd
root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

過濾以點爲結尾的行

[root@lb03 ~]# grep '\.$'  passwd
oldboy.

匹配任意一組數字

[root@lb03 ~]# grep -E  '[0-9]+'  passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt

| () [] 的使用

[root@lb03 ~]# grep  '^r'  passwd 
root:x:0:0:root:/root:/bin/bash
roott
[root@lb03 ~]# grep  '^r|^l'  passwd 
[root@lb03 ~]# grep -E   '^r|^l'  passwd 
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
roott
[root@lb03 ~]# grep  '^[rl]'  passwd
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
roott
[root@lb03 ~]# grep  -E  '^(r|l)'  passwd
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
roott
[root@lb03 ~]# grep  -E  '^(rl)'  passwd
[root@lb03 ~]# echo 'rlgrtueigh'  >> passwd
[root@lb03 ~]# grep  -E  '^(rl)'  passwd
rlgrtueigh

過濾以r或R開頭的行

[root@lb03 ~]# grep  -E '^r|^R'  passwd 
root:x:0:0:root:/root:/bin/bash
ROOT
roott
rlgrtueigh
[root@lb03 ~]# grep  -Ei  '^r'  passwd 
root:x:0:0:root:/root:/bin/bash
ROOT
roott
rlgrtueigh
[root@lb03 ~]# grep -E  '^(r|R)'   passwd
root:x:0:0:root:/root:/bin/bash
ROOT
roott
rlgrtueigh
[root@lb03 ~]# grep  '^[rR]'  passwd
root:x:0:0:root:/root:/bin/bash
ROOT
roott
rlgrtueigh

取反,不以r或R開頭的行

[root@lb03 ~]# grep  -E  '^[^rR]'  passwd 
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin


[root@lb03 ~]# grep  -v  '^[rR]'  passwd

統計passwd文件中全部字母出現的次數

[root@lb03 ~]# grep -o  '[a-Z]'  passwd  |sort |uniq -c |sort -rn
     80 n
     77 o
     62 s
     55 i
     42 t
     38 b
     36 l
     34 a
     33 e
     29 r
     26 g
     25 d
     24 x

統計passwd文件中全部單詞出現的次數

[root@lb03 ~]# grep -Eo  '[a-Z]+'  passwd  |sort |uniq -c |sort -rn
     23 sbin
     21 x
     17 nologin
      6 var
      5 bin
      4 root
      3 sync
      3 spool
      3 shutdown

[root@lb03 ~]# grep -o  '[a-Z]*'  passwd  |sort |uniq -c |sort -rn
     23 sbin
     21 x
     17 nologin
      6 var
      5 bin
      4 root
      3 sync
      3 spool
      3 shutdown

取ip地址

[root@lb03 ~]# ip a s eth0 |grep -w inet  | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' |head -1
10.0.0.4
​```bash


## 取出文件中的身份證號碼
​```bash

[root@lb03 ~]# grep -Ew '[0-9]{17}[0-9X]'  id.txt
鄒 371481199403259478
莫 52020319810613433X
榮 530124197504135438
阮 360702197902169951
相關文章
相關標籤/搜索