19.每日一個Linux命令----grep

描述:在指定的文件或標準輸出、標準輸入內,查找知足條件的內容,起過濾做用,支持正則表達式。正則表達式

用法:grep [option] 文件名shell

經常使用參數:bash

-a :將 binary 文件以 text 文件的方式搜尋數據
-c :計算找到 '搜尋字符串' 的次數
-i :忽略大小寫的不一樣,因此大小寫視爲相同
-n :順便輸出行號
-w: 整詞比對, 相似 \<word\>
-c: 只輸出符合比對的行數
-l: 只輸出符合比對的文件名稱
-v :反向選擇,亦即顯示出沒有 '搜尋字符串' 內容的那一行!
--color=auto :能夠將找到的關鍵詞部分加上顏色的顯示喔

-R 遞歸,包含子目錄

-E 擴展正則表達式

-q 安靜模式,不輸出結果

-F 搜索字符串

示例:1.顯示/etc/passwd文件中含有root的行,並在行首加上所在行號。spa

[root@share22 ~]# grep -n root /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin

2.顯示/etc/passwd文件中不包含root的行。code

[root@share22 ~]# grep -v root /etc/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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nolog

3.顯示/etc 目錄中(包含子目錄)的全部文件中包含以yes結尾的行,並忽略大小寫。遞歸

[root@share22 ~]# grep -iR 'yes$' /etc
/etc/yum/yum-cron.conf:update_messages = yes
/etc/yum/yum-cron.conf:download_updates = yes
/etc/systemd/bootchart.conf:#Filter=yes
/etc/systemd/journald.conf:#Compress=yes
/etc/systemd/journald.conf:#Seal=yes
/etc/systemd/journald.conf:#ForwardToSyslog=yes
/etc/systemd/logind.conf:#LidSwitchIgnoreInhibited=yes
/etc/systemd/system/getty.target.wants/getty@tty1.service:IgnoreOnIsolate=yes
/etc/systemd/system/getty.target.wants/getty@tty1.service:TTYReset=yes
/etc/systemd/system/getty.target.wants/getty@tty1.service:TTYVHangup=yes
/etc/systemd/system/getty.target.wants/getty@tty1.service:TTYVTDisallocate=yes
/etc/systemd/system/getty.target.wants/getty@tty1.service:SendSIGHUP=yes
/etc/systemd/system/multi-user.target.wants/kdump.service:RemainAfterExit=yes

4.grep命令不輸出結果,經過命令返回值$?判斷,經常使用於shell腳本中。字符串

[root@share22 ~]# grep -q root /etc/passwd
[root@share22 ~]# echo $?
0

egrep 與 grep -E 相等;fgrep與grep -F相等。get

egrep:字符串處理

爲 grep 的擴充版本, 改良了許多傳統 grep 不能或不便的操做. 比方說:it

- grep 之下不支持 ? 與 + 這兩種 modifier, 但 egrep 則可。

- grep 不支持 a|b 或 (abc|xyz) 這類"或一"比對, 但 egrep 則可。

- grep 在處理 {n,m} 時, 需用 \{ 與 \} 處理, 但 egrep 則不需。

fgrep:

不做RE處理,表達式僅做通常字符串處理,全部meta均失去功能。

相關文章
相關標籤/搜索