Linux中经过grep命令检索文件内容和指定内容先后几行

原文连接: https://www.linuxidc.com/Linux/2017-11/148390.htmlinux

 

Linux系统中搜索、查找文件中的内容,通常最经常使用的是grep命令,另外还有egrep命令,同时vi命令也支持文件内容检索。正则表达式

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

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

    例如:app

    grep "0101034175" /data/transaction.20170118.log
  2. 在多个文件中检索某个字符串工具

    命令格式:spa

    1. grep "被查找的字符串t" filename1 filename2 filename3 ...
    2. grep "被查找的字符串" *.log
  3. 显示所检索内容在文件中的行数,能够使用参数-n.net

    命令格式: 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

相关文章
相关标签/搜索