grep基礎用法
功能:根據過濾條件逐行匹配,打印匹配到的行。
參數:
--color=auto:顯示顏色
–c:計算符合過濾條件的行的行數
-i:不區分字符大小寫
-o:僅顯示匹配到的字符串的本身,並不顯示整行
-v:反向選擇
-E:使用擴展正則表達式
-q:靜默模式,即不輸出任何內容(通常用在shell腳本中)
-A n:顯示匹配的後n行
-B n:顯示匹配的前n行
-C n:顯示匹配的前後各n行
–h:多文件查詢時不顯示文件名
-s 不顯示不存在或無匹配文本的錯誤信息。
-l 查詢多文件時只輸出包含匹配字符的文件名。
實例:匹配固定的字符串
[root@Linux_11 ~]# grep root passwd
root:x:0:0:超級管理員:/root:/bin/bash
[root@Linux_11 ~]#
提示:字符串匹配可以不加引號,但是如果是是使用正則表達式或者是擴展正則表達式則一定要使用引號
實例:-c參數的使用
對匹配到的行計數
[root@Linux_11 ~]# grep -c login passwd
5
[root@Linux_11 ~]#
實例:-i參數的使用
[root@Linux_11 ~]# grep -i login 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
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
實例:-v參數的使用
[root@Linux_11 ~]# grep -v login passwd
root:x:0:0:超級管理員:/root:/bin/bash
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/shutdon
halt:x:7:0:halt:/sbin:/sbin/halt
提示:顯示不包含login的行
實例:-o參數的使用
[root@Linux_11 ~]# grep -o login passwd
login
login
login
login
login
實例:-n顯示行號(注意:顯示的是原文件中的行號,並不是重新編排的行號)
[root@Linux_11 ~]# grep -n login 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
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
實例:-A參數的使用(after)
顯示匹配到的行的後幾行
[root@Linux_11 ~]# grep -A 2 'tmpfs'fstab
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
實例:-B參數的使用(before)
顯示匹配到的行的前幾行
[root@Linux_11 ~]# grep -B 2 'tmpfs'fstab
UUID=0b3dbe42-03c3-408a-b634-1b6c60d2640d /home ext2 defaults 1 2
UUID=00d9e852-7ba0-4a6c-b2a8-34a73e2e4881 swap swap defaults 0 0
實例:-C(大寫)參數的使用
顯示匹配到的行的前後各幾行
[root@Linux_11 ~]# grep -C 2 'tmpfs'fstab
UUID=0b3dbe42-03c3-408a-b634-1b6c60d2640d /home ext2 defaults 1 2
UUID=00d9e852-7ba0-4a6c-b2a8-34a73e2e4881 swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
實例:-q(靜默模式)參數的使用
[root@Linux_11 ~]# grep -q login passwd
[root@Linux_11 ~]# echo $?
0
[root@Linux_11 ~]# grep -q ogin passwd
[root@Linux_11 ~]# echo $?
0
[root@Linux_11 ~]# grep -q oginnn passwd
[root@Linux_11 ~]# echo $?
1
注意:靜默模式不管匹配到了與否,都是不會有輸出的,需要使用特殊變量$?進行判斷,一般是在shell腳本編程中使用的。(默認是匹配到了有輸出,沒有匹配到沒有輸出)
實例:多文件查詢
[root@Linux_11 ~]# grep login passwd fstab
passwd:bin:x:1:1:bin:/bin:/sbin/nologin
passwd:daemon:x:2:2:daemon:/sbin:/sbin/nologin
passwd:adm:x:3:4:adm:/var/adm:/sbin/nologin
passwd:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
passwd:uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
fstab:proc /proc proc defaults 0 0 login
##############################################################################
[root@Linux_11 ~]# grep -h login passwd fstab
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
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
proc /proc proc defaults 0 0 login
提示:不顯示文件名
##############################################################################
[root@Linux_11 ~]# grep -l login passwd fstab
passwd
fstab
提示:只顯示匹配到的文件名