grep命令的功能:從文本文件或管道數據流中篩選匹配的行及數據(一般會配合正則表達式一起使用)
語法:
grep 【options】PATTERN FILE
options:選項
PATTERN: 匹配模式
FILE: 文件
常用的選項:
-v 顯示不匹配的行(取反)
-i 不區分大小寫
-E 使用擴展正則表達式
--color=auto 為grep過濾的匹配字符串添加顏色
-o 只輸出匹配到的內容
范例:去除配置文件里面的注釋和空行
grep -Ev "^$|#" nginx.conf #<==^$表示過濾空行,是正則表達式的內容。
二)正則表達式
字符匹配:
. 匹配單個字符
[] 匹配指定范圍內的任意單個字符
[^] 匹配指定范圍外的任意單個字符
[[:digit:]] 匹配所有數字
[[:space:]] 匹配所有空白字符
[[:punct:]] 匹配所有的標點符號
[[:alpha:]] 匹配所有的字母
[[:alnum:]] 匹配所有的字母和數字
次數匹配: 在期望匹配到的字符后面提供一個控制符,用于表達匹配其前面的字符指定的次數
* 任意長度(前面字符的任意長度)
\? 匹配其前面的字符0次或1次,表示其前面(左側)字符可有可無
\+ 匹配其前面的字符1次或多次, 表示其前面(左側)字符至少出現一次
\{m\} 精確匹配M次,表示其前面(左側)字符精確出現M次
\{m,n\} 至少M次,至多N次,表示其前面(左側)字符最少出現M次,最多出現N次
位置匹配:
^: 錨定行首,注意^一定要寫在最前面
$: 錨定行尾 ,注意^一定要寫在最右邊 ---^PATTERN$ 錨定整行內容
^$: 匹配空白行
單詞錨定:由非特殊字符組成的連續的字符串
\< 錨定詞首, \<PATTERN ,也可以用\bPATTERN
\> 錨定詞尾 ,\>PATTERN
\<PATTERN\> 匹配整個單詞
分組
\(\)
分組中的模式,在某次的具體匹配過程中所匹配的字符,可以被記憶下來。保存于內置的變量中使用\1,\2等的內置變量中,因此還可以被引用\1: 引用,模式中自左而右,由第一個左括號以及與之對應的右括號中模式匹配到的內容\2: 引用,模式中自左而右,由第二個左括號以及與之對應的右括號的模式所匹配的內容
擴展正則表達式
1)把基本正則表達式中需要用\轉義的,都不需要咯,例如
\{\}---在擴展正則中,可以直接{}
\(\)-----在擴展正則中,可以直接( )
2)新增一個 |,例如
[root@fenfa tmp]# egrep -i --color=auto "yuki|alex" test1.txt
yuki
ALEX
范例:
1)找出/pro/meminfo文件中,所有以大寫或小寫s開頭的行
[root@fenfa tmp]# cat /proc/meminfo |grep --color=auto -E "^(s|S)"
SwapCached: 0 kB
SwapTotal: 2097148 kB
SwapFree: 2097148 kB
Shmem: 188 kB
Slab: 150308 kB
SReclaimable: 130428 kB
SUnreclaim: 19880 kB
2)找出functions中某個單詞后面有一個小括號的
[root@fenfa tmp]# cat /etc/rc.d/init.d/functions |grep -Eo "[_[:alnum:]]+\(\)"
3)使用echo命令輸出一絕對路徑,使用grep取出其基名
[root@fenfa tmp]# echo /etc/sysconfig/network |grep --color=auto -Eo '\<[^/]+/?$'
network
[root@fenfa tmp]# echo "/mnt/sdc/" |grep -Eo "[^/]+/?$" |cut -d/ -f1
sdc
使用grep取路徑名
[root@fenfa tmp]# echo /etc/sysconfig/network-scripts/ifcfg-eth0 |grep --color=auto -Eo '^/.*/'
/etc/sysconfig/network-scripts/
4)找出rc.sysinit文件中,失少一個空白字符開頭,且后面跟一個非空白字符的行
[root@fenfa tmp]# cat /etc/rc.d/rc.sysinit |grep "[[:space:]]\+[^[:space:]]"
5)
[root@fenfa tmp]# netstat -tan|grep "LISTEN[[:space:]]*$"
6)顯示當前系統root,centos用戶的默認的shell和uid
[root@fenfa tmp]# grep -E "^(root|centos)\>" /etc/passwd|cut -d: -f1,3,7
root:0:/bin/bash
centos:1001:/bin/bash
- 第一章:文件和目錄操作類命令
- 第一節:pwd命令
- 第二節:cd命令
- 第三節:mkdir命令
- 第四節:touch命令
- 第五節:ls命令
- 第六節:cp命令
- 第八節: mv命令
- 第九節:ln命令
- 第十節:find命令
- 第十一節:chattr命令
- 第十二節:chown命令
- 第十三節:chmod命令
- 第二章:文件過濾和內容編輯類命令
- 第一節: cat命令
- 第二節:less命令
- 第三節:head命令
- 第四節:tail命令
- 第五節:cut命令
- 第六節:sort命令
- 第七節:wc命令
- 第八節:tr命令
- 第三章:文本處理三劍客
- 第一節:grep命令
- 第二節:sed命令
- 第四章:linux信息顯示類或搜索命令
- 第一節:uname命令
- 第二節:du命令
- 第三節:data命令
- 第四節:echo命令
- 第五節:watch命令
- 第五章: 文件備份和壓縮類命令
- 第一節:tar命令
- 第二節:gzip壓縮
- 第三節:zip和upzip命令
- 第四節:scp命令
- 第五節: rsync文件同步工具命令
- 第六章:Linux用戶管理及用戶信息查詢類命令
- 第一節:useradd命令
- 第二節:usermod命令
- 第三節:userdel命令
- 第四節:groupadd和groupdel命令
- 第五節:passwd命令
- 第六節:su命令
- 第七節:visudo命令
- 第八節:id命令
- 第九節:w和who命令
- 第十節:last和lastb命令
- 第七章: Linux磁盤及文件系統管理
- 第一節:fdisk命令
- 第二節: partprobe命令
- 第三節:parted磁盤分區工具
- 第四節:mkfs命令
- 第五節:dumpe2fs命令
- 第六節: fsck命令
- 第七節:mount和umount命令
- 第八節:dd命令
- 第九節:df命令