Linux中通過grep命令檢索文件內容和指定內容前后幾行


原文鏈接: https://www.linuxidc.com/Linux/2017-11/148390.htm

 

Linux系統中搜索、查找文件中的內容,一般最常用的是grep命令,另外還有egrep命令,同時vi命令也支持文件內容檢索。

  1. 搜索某個文件里面是否包含字符串

    命令格式:grep "被查找的字符串" filename1

    例如:

    grep "0101034175" /data/transaction.20170118.log
  2. 在多個文件中檢索某個字符串

    命令格式:

    1. grep "被查找的字符串t" filename1 filename2 filename3 ...
    2. grep "被查找的字符串" *.log
  3. 顯示所檢索內容在文件中的行數,可以使用參數-n

    命令格式: grep -n "被查找的字符串" *.log

  4. 檢索時需要忽略大小寫問題,可以使用參數“-i”

    命令格式: grep -i "被查找的字符串" *.log

  5. 從文件內容查找不匹配指定字符串的行

    命令格式:grep –v "被查找的字符串" 文件名

  6. 搜索、查找匹配的行數:

    命令格式:

    1. grep –c "被查找的字符串" 文件名
    2. grep "被查找的字符串" 文件名 | wc -l
  7. 遞歸搜索某個目錄以及子目錄下的所有文件

    命令格式:grep –r "被查找的字符串" 文件目錄

  8. 獲取哪些文件包含搜索的內容,並列出文件名

    命令格式:grep -H –r "被查找的字符串" 文件目錄 | cut -d: -f1 [| uniq]

    例如:

    grep -H -r "v\$temp_space_header" /u01/app/Oracle/product/11.1.0/dbhome_1/rdbms/admin/ | cut -d: -f1
    
    grep -H -r "v\$temp_space_header" /u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/ | cut -d: -f1 | uniq
  9. 獲取與整個搜索字符匹配的內容

    命令格式:grep –w "被查找的字符串" 文件名

  10. grep命令與find 命令的結合,實現聯合檢索

    命令格式:find . -name '*.sql' -exec grep -i '被檢索內容' {} \; -print

    例如:

    find . -name '*.sql' -exec grep -i 'v\$temp_space_header' {} \; -print

Linux命令-文件文本操作grep  http://www.linuxidc.com/Linux/2015-12/126259.htm

grep正則表達式 http://www.linuxidc.com/Linux/2015-09/123035.htm

Linux中正則表達式與文件格式化處理命令(awk/grep/sed) http://www.linuxidc.com/Linux/2013-03/81018.htm

Linux基礎之grep和正則表達式 http://www.linuxidc.com/Linux/2016-10/136250.htm

14 個 grep 命令的例子 http://www.linuxidc.com/Linux/2015-05/117626.htm

Linux文本處理工具grep和正則表達式及egrep與grep區別  http://www.linuxidc.com/Linux/2016-08/134046.htm

Linux基礎之-正則表達式(grep,sed,awk)  http://www.linuxidc.com/Linux/2017-05/144221.htm

Linux文本處理工具及grep  http://www.linuxidc.com/Linux/2017-03/142277.htm 

正則表達式與grep和sed  http://www.linuxidc.com/Linux/2017-10/147269.htm

grep命令中文手冊(info grep翻譯)  http://www.linuxidc.com/Linux/2017-09/146645.htm

grep 命令系列:如何在 UNIX 中根據文件內容查找文件 http://www.linuxidc.com/Linux/2016-01/128017.htm

 

其他:

如果要獲得一個文件中的最后幾行,使用tail命令就可以很方便的實現。但在有些時候,會需要用到如標題中所描述的功能。

我舉一個具體的例子:在打印日志堆棧信息時,就是在字符串“exception” 之后的幾行,但這整個部分是在文件的中間,如果將這部分數據提取出來呢?

使用grep命令可以比較輕松達到目的,具體使用如下:

01
$grep-A|B n"key"file
其中:

A:表示在字符串之后 after  context
B:表示在字符串之前 before context
n:要獲取多少行文本 line number
key:為要查找的字符串
file:文件名
比如上面提到的例子中,可以使用如下命令獲取彈性常數:

0
grep -A 10 -B 10 -i “key” filename
-i表示忽略大小寫。

獲取的幾行文本可以通過管道傳遞給其他命令進行進一步的提取或使用。

舉個例子:

要獲取日志中包含“exception”字符串的后邊20行堆棧信息: 

命令:

grep -A 20 -i "exception" filename
結果如下:

 


那如果我們想獲取異常日志的前10行和后10行,不用加-A和-B,使用如下命令就可以了:

grep -10 -i "exception" filename
---------------------
版權聲明:本文為CSDN博主「蠟筆zlx」的原創文章,遵循CC 4.0 by-sa版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/zhaolixin0726/article/details/53123453


免責聲明!

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



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