shell grep命令及常見用法

2021-08-03 20:50:34 字數 1898 閱讀 6298

【背景】

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字元查詢,新增命令

例項一 在當前目錄下test.html中查詢以 pdf 結尾的行,並將結果輸出到test.txt檔案中 more test.html grep pdf test.txt 例項二 參考 1 顯示當前目錄下test.txt所有行 2 顯示test.txt中以 c 開頭的行 more test.txt g...

shell grep命令 萬用字元 管道符

a 數字 列出符合條件的行,並將連續列出後續n行 b 數字 列出符合條件的行,並將連續列出前面n行 c 統計包含字串的行一共幾行!i 忽略大小寫 n 輸出行號 v 反向查詢 取反 root localhost grep root etc passwd root x 0 0 root root bin...

shell cut命令及常見用法

背景 cut是乙個將文字按列進行劃分的文字處理工具。cut命令逐行讀入文字,然後按列劃分欄位並進行提取 輸出等操作。命令格式 cut option filename cat filename cut option 可以看到,cut命令既可以用檔案作為引數也可以接受標準輸入。常見用法 本次實驗所用的檔...