【背景】
grep的全稱是global regular expression print,是linux中最強大的文字搜尋命令之一,常用於搜尋文字檔案中是否含有某些特定模式的字串。該命令以行為單位讀取文字並使用正規表示式進行匹配,匹配成功後列印出該行文字。
【命令格式】
grep [option] "string_to_find" filename
常見選項:
(1)-i:忽略搜尋字串的大小寫
(2)-v:取反,即輸出不匹配的那些文字行
(3)-n:輸出行號
(4)-l:輸出能夠匹配模式的檔名,相反的選項為-l
(5)-q:靜默輸出
選項是可選的,根據實際需求進行選擇即可
string_to_find為需要匹配的模式,可以填寫字串或者正規表示式
filename為需要查詢的檔案的名稱
【常見用法】
1.統計檔案中能夠匹配的行數
涉及選項:
(1)-c:計算匹配成功的行數
例子:(1)輸出text.txt中含有hello字串的行的數量:
grep -c "hello" text.txt
2.統計檔案中匹配的數量
涉及選項:
(1)-o:只輸出匹配到的文字部分
例子:(1)輸出text.txt中含有hello的數量:
grep -o "hello" text.txt | wc -l
注意這個例子和上個的區別,-c選項在遇到一行中多次匹配正規表示式的情況時只是認為這一行匹配成功,而不會計算匹配成功的次數
3.遞迴搜尋
涉及選項:
(1)-r:grep的引數filename為目錄時可以加上本選項表示遞迴搜尋
例子:(1)從test_dir開始遞迴查詢含有hello的行:
grep -r "hello" test_dir
這個選項很適用於在工程中搜尋某些特定字串
4.匹配多個正規表示式
涉及選項:
(1)-e:該選項加上正規表示式就是乙個需要匹配的模式
例子:(1)找出匹配hello或者world的行:
grep -e "hello" -e "world" test.txt
5.指定/排除檔案
涉及選項:
(1)--include:指定需要搜尋的檔案
(2)--exclude:排除需要搜尋的檔案
(3)--exclude-dir:排除需要搜尋的目錄
例子:(1)搜尋src目錄中.c和.cpp檔案中的含有main的行:
grep -r "main" ./src --include *.
(2)搜尋src目錄中含有main的行,但不搜尋readme檔案:
grep -r "main" ./src --exclude "readme"
(3)搜尋src目錄中含有main的行,但不搜尋.git資料夾:
grep -r "main" ./src --exclude-dir ".git"
6.零值位元組
涉及選項:
(1)-z:設定輸出的文字之間以'\0'作為分隔符
例子:(1)刪除含有hello字串的檔案:
grep -r "hello" ./src -lz | xargs -0 rm -f
注意如果不使用-z選項,則輸出的檔名之間以空格符分隔。那麼如果有個檔案的檔名本身就是包含空格的,則該檔案會被認為是兩個檔案,就可能造成誤刪
shell中grep命令詳解
用 grep 搜尋文字檔案 如果您要在幾個文字檔案中查詢一字串,可以使用 grep 命令。grep 在文字中搜尋指定的字串。舉個例子 假設您正在 usr src linux documentation 目錄下搜尋帶字串 magic 的檔案 grep magic usr src linux docum...
shell中的grep命令
grep命令是一種強大的文字搜尋工具,根據使用者指定的 模式 對目標文字進行匹配檢查,列印匹配到的行 grep命令的基本用法引數 說明 c 只輸出匹配行的數量 i搜尋時忽略大小寫 h查詢多檔案時不顯示檔名 l只列出符合匹配的檔名,而不列出具體的匹配行 n列出所有的匹配行並顯示行號 s不顯示不存在或無...
grep命令常用引數及用法
grep命令是linux系統中一種強大的文字搜尋工具,它能使用正規表示式搜尋文字,並把匹 配的行列印出來。grep全稱global regular expr ession print,表示全域性正規表示式版本,它的使用許可權是所有使用者。grep可用於shell指令碼,因為grep通過返回乙個狀態值...