linux文本處理三劍客之grep命令
1. grep命令的用法
作用:grep命令是一種強大的文本搜索工具,根據用戶指定的“模式”對目標文本進行匹配檢查,打印匹配到的行
模式:由正則表達式或者字符及基本文本字符所編寫的過濾條件
grep命令的基本用法:
參數 | 說明 |
---|---|
-c | 只輸出匹配行的數量 |
-i | 搜索時忽略大小寫 |
-h | 查詢多文件時不顯示文件名 |
-l | 只列出符合匹配的文件名,而不列出具體的匹配行 |
-n | 列出所有的匹配行並顯示行號 |
-s | 不顯示不存在或無匹配文本的錯誤信息 |
-v | 顯示不包含匹配文本的所有行 |
-w | 匹配整詞 |
-x | 匹配整行 |
-r | 遞歸搜索,不僅搜索當前工作目錄,並且搜索子目錄 |
-q | 禁止輸出任何結果,以退出狀態表示搜索是否成功 |
-b | 打印匹配行距文件頭部的偏移量,以字節爲單位 |
-o | 與-b選項結合使用,打印匹配詞距文件頭部的偏移量,以字節爲單位 |
-E | 支持擴展的正則表達式 |
-F | 不支持正則表達式,按照字符串的字面意思進行匹配 |
2. 使用舉例
例1:
grep root /etc/passwd #過濾文件中含有root的行
grep -c root /etc/passwd #-c只輸出匹配行的數量
grep -n root /etc/passwd #-n列出所有的匹配行並顯示行號
grep -v root /etc/passwd #-v顯示不包含root的所有行
grep -vc root /etc/passwd #-v顯示不包含root的所有行的數量
例2:
grep -i root passwd #搜索時忽略大小寫
grep ro*t passwd #應用正則表達式
例3:
grep root dd
grep -s root dd #-s不顯示不存在或無匹配文本的錯誤信息
例4:
grep -r passwd /etc/ #-r遞歸搜索,不僅搜索當前工作目錄,並且搜索子目錄
例5:
grep roo* passwd
grep -w roo* passwd #-w匹配整詞
例6:
grep -w World world.txt
grep -x World world.txt #-x匹配整行
例7:
grep -q -x World world.txt #-q禁止輸出任何結果,以退出狀態表示搜echo $?
echo $? #0表示正確搜到
grep -q -x 'World dd' world.txt
echo $? #其它數字表示沒有搜到
例8:
grep -c ^$ passwd #搜索空白行,打印行數
grep -c ^[^$] passwd #搜索非空行,打印行數
例9:
grep -n [Rr]oot passwd #正則表達式 表示第一個字符可以是R或r後面三個字符爲oot