Linux中通过grep命令检索⽂件内容和指定内容前后⼏⾏原⽂链接:
Linux系统中搜索、查⽂件中的内容,⼀般最常⽤的是grep命令,另外还有egrep命令,同时vi命令也⽀持⽂件内容检索。
1. 搜索某个⽂件⾥⾯是否包含字符串
命令格式:grep "被查的字符串" filename1
例如:
grep "010*******" /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//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
grep正则表达式
Linux中正则表达式与⽂件格式化处理命令(awk/grep/sed)
Linux基础之grep和正则表达式
14 个 grep 命令的例⼦
Linux⽂本处理⼯具grep和正则表达式及egrep与grep区别
Linux基础之-正则表达式(grep,sed,awk)
Linux⽂本处理⼯具及grep
正则表达式与grep和sed
grep命令中⽂⼿册(info grep翻译)
grep 命令系列:如何在 UNIX 中根据⽂件内容查⽂件
其他:
如果要获得⼀个⽂件中的最后⼏⾏,使⽤tail命令就可以很⽅便的实现。但在有些时候,会需要⽤到如标题中所描述的功能。
我举⼀个具体的例⼦:在打印⽇志堆栈信息时,就是在字符串“exception” 之后的⼏⾏,但这整个部分是在⽂件的中间,如果将这部分数据提取出来呢?
使⽤grep命令可以⽐较轻松达到⽬的,具体使⽤如下:
01
$grep-A|B n"key"file
其中:
A:表⽰在字符串之后 after  context
B:表⽰在字符串之前 before context
n:要获取多少⾏⽂本 line number
key:为要查的字符串
file:⽂件名
⽐如上⾯提到的例⼦中,可以使⽤如下命令获取弹性常数:
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版权协议,转载请附上原⽂出处链接及本声明。
原⽂链接:blog.csdn/zhaolixin0726/article/details/53123453

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。