grep基礎用法

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

提示:只顯示匹配到的文件名


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章