linux grep 命令常見用法


在 linux 系統中,有三個強大的文本分析處理工具:grep  sed  awk,其中:

grep   用於搜索文本內容      =>     linux grep 命令常見用法

sed    用於編輯文本內容       =>     linux sed  命令常見用法

awk   用於處理和生成報表    =>     linux awk 命令常見用法

 

grep 的工作原理是將文件內容逐行讀入,然后在每一行數據中搜索符合條件的內容並打印出來

grep 命令的使用格式如下:

grep   “pattern”   file_name

在文件中搜索符合樣式  pattern  的內容,並打印出來

這里的 pattern 一般是正則表達式,也可以是字符串(字符串也可以看成是一種簡單的正則表達式)

下面結合實例簡單介紹 grep 命令的常見用法:

假設文件 log.txt 的內容如下:

running syntax check ...
checked 100 lines,2 have errors
error: nothing matched !
error: cannot open the target !
syntax check finished!

 

1. 搜索出包含字符 error 的行

grep  error  log.txt
>>
checked 100 lines,2 have errors
error: nothing matched !
error: cannot open the target !

如果希望將搜索到的目標高亮出來,可以加上選項 “--color=auto”

grep  --color=auto  error  log.txt
>>
checked 100 lines,2 have errors
error: nothing matched !
error: cannot open the target !

為了方便,可以將這個選項添加到自己的 alias 文件中:

alias  grep  "grep  --color=auto"

 

2. 搜索以 error 開頭的那些行

grep  "^error"  log.txt
>>
error: nothing matched !
error: cannot open the target !

這里的 "^error" 是正則表達式, 符號 "^" 表示一行的開頭

注意正則表達式需要用雙引號括起來,但是如果 pattern 是簡單的字符串(比如 “error”),則可以省略雙引號

 

3. 統計文件 log.txt 中字符 error 出現的次數

grep  -c  error  log.txt
>>
3

注意:如果一行中有多個 error 字符,只會統計一次

 

4. 搜索不包含字符串 error 的那些行

grep  -v  error  log.txt
>>
running syntax check ...
syntax check finished!

選項 “-v ” 表示 反轉搜索

 

5. 在目錄下的所有文件中搜索

grep  -r  error  log

這里的 log 是一個目錄,表示在 目錄 log 和 log 的子目錄下的所有文件中搜索字符串 error

 

6. 搜索 “在文件 A 中存在,但是在文件 B 中不存在” 的那些行

文件 log1.txt 的內容如下:

data[1]
data[2]
data[3]
data[4]
data[5]

文件 log2.txt 中的內容是:

data[1]
data[3]
data[4]

假設需要搜索 “在文件 log1.txt 中存在,但是在 log2.txt 中不存在” 的那些行

grep  -f  log2.txt  -vF  log1.txt
>>
data[2]
data[5]

這里的 -f 表示 “將文件的內容作為樣式”,也就是將文件中的每一行都作為樣式去搜索

而選項 -F 表示 “將樣式當作文本,而不是正則表達式”,默認情況下, grep 會將 log2.txt 中的每一行當作一個正則表達式,然后去 log1.txt 中查找是否有匹配這些正則表達式的內容,所以  "data[1]" 如果被視為正則表達式,就只能搜索到包含 “data1” 的那些行,因為正則表達式 “[1]" 就表示數字 1 ;

所以上面這條命令就表示: 將 log2.txt 中的每一行當做常規字符串,去 log1.txt 中搜索是否有有相同的字符串,如果有,就排除掉,最后打印出 log1.txt 中剩下的行。

方法2: cat  log1.txt  log2.txt  | sort  | uniq -u

其中 uniq -u 表示只打印那些不重復的行

 

 

grep 命令的用法還有很多,以上只是列舉了一些常見的用法,

如果希望深入學習,可以參考相關書籍或者直接訪問 GNU grep 網站:

http://www.gnu.org/software/grep/manual/grep.html

 

 

|--------------------------------------|

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM