一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹配的行打印出來
命令格式
grep [options] [pattern] file|directory
1. 命令選項
-l 列出包含指定模式的文件的文件名
-i 忽略大小寫
-w 完全匹配關鍵詞
-n 查找指定模式并顯示匹配行的行号
-v 輸出不包含指定模式的行
-o 僅顯示匹配的字符串
-r 遞歸地查找特定模式
-e 查找多個模式
-c 計算模式匹配到的數量
-B 輸出匹配指定模式前N行
-A 輸出匹配指定模式後N行
-C 輸出匹配指定模式前後N行
-E 擴展正則表達式
-l 打印匹配的文件名
-L 打印不匹配的文件名
2.常見正則
^ 匹配行開始,如:/^sed/匹配所有以sed開頭的行。
$ 匹配行結束,如:/sed$/匹配所有以sed結尾的行。
x{m} 重複字符x,m次,如:/0\{5\}/匹配包含5個0的行。
x{m,} 重複字符x,至少m次,如:/0\{5,\}/匹配至少有5個0的行。
x{m,n} 重複字符x,至少m次,不多于n次,如:/0\{5,10\}/匹配5~10個0的行。
^$ 匹配空行
abc$ 匹配以abc結尾的行
[] 匹配一個指定範圍内的字符,如[0-9a-z]
[^] 匹配一個不在指定範圍内的字符
\<[0-9]{2}\> 匹配獨立2位數
使用示例1. 以#開頭的行及空行不顯示
grep -v "^#\|^$" /etc/rsyslog.conf
2. 清除本機除了當前登陸用戶以外的所有用戶
kill $(who -u|grep -v `whoami`|awk '{print $6}'|sort -u)
3. 統計etc及其子目錄下所有文件數量
ls -lR /etc/ | grep "^-" | wc -l
4. 打印本機eth0網卡ipv4地址
ifconfig eth0|grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}" | awk '{print $2}'
5. 打印本機eth0網卡mac地址
ifconfig eth0|egrep '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}' | awk '{print $2}'
ifconfig eth0|egrep '[0-9a-fA-F]{4}(\.[0-9a-fA-F]{4}){2}' | awk '{print $2}'
6. 多個模式關鍵詞匹配
grep -Ew "Run|Quit" rj.log
7. 匹配包含三位數字的行
grep -E "\<[0-9]{3}\>" a.c
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!