每天一个linux命令grep

Posted 白小白001

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每天一个linux命令grep相关的知识,希望对你有一定的参考价值。

参考:

【linux grep命令详解】http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856896.html

【linux命令中使用正则表达式】http://www.cnblogs.com/Quincy/archive/2012/03/26/2418485.html  

简介

grep:一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来

【grep常用用法】

grep [-acinv] [--color=auto] \'搜寻字符串\' filename
选项与参数:
-a :将 binary 文件以 text 文件的方式搜寻数据
-c :计算找到 \'搜寻字符串\' 的次数
-i :忽略大小写的不同
-n :输出行号
-v :反向选择,亦即显示出没有 \'搜寻字符串\' 内容的那一行!
--color=auto :\'搜寻字符串\' 显示颜色

【实例】

1、搜索文件中的字段/行

# 打印有 "hello"的行,不区分大小写,标行号、颜色
[service@ndl-bass-ys-vm-129-186 wy]$ grep -in --color=auto hello yy.log 
2:hello,wolrd:nihao
3:HELLO

# 同时有 xx和xxx 的行
[service@ndl-bass-ys-vm-129-186 wy]$ grep -E \'WARNING|FATAL\' a.log 
WARNING fsjfs
WARNING hello:FATAL/IGNOR
#打印没有"hello"的行
[service@ndl-bass-ys-vm-129-186 wy]$ grep -v hello yy.log              
ERROR suscess
HELLO

# 打印没有 hello 和 error 的行
[service@ndl-bass-ys-vm-129-186 wy]$ grep -v hello yy.log |grep -iv error
HELLO

# a中有,b中没有的
grep -xvf a b

# ab中共同有的
grep -xf a b
#  关键字所在行的 前1行(B1),后2行(A2) 打印出
[service@ndl-bass-ys-vm-129-186 wy]$ grep -B1 -A2 --color=auto hello yy.log  
ERROR suscess
hello,wolrd:nihao
HELLO
suscess

2、搜索文件

# 搜索当前目录带 error 的文件
[service@ndl-bass-ys-vm-129-186 wy]$ grep -i error *             
Binary file clean.jar matches
new:ERROR suscess
yy.log:ERROR suscess
yy.log:ERRORend
# 当前目录及其子目录
[service@ndl-bass-ys-vm-129-186 wy]$ grep -r ERROR * 
new:ERROR suscess
yy.log:ERROR suscess
yy.log:ERRORend
# 当前目录及其子目录,只显示文件名,不显示具体行
[service@ndl-bass-ys-vm-129-186 wy]$ grep -r -l ERROR *
new
yy.log

 【grep正则表达式

1、匹配数字

# 模糊匹配数字
[service@ndl-bass-ys-vm-129-186 wy]$ grep \'2017-06-1[0-9]\' yy.log   
[INFO2] [2017-06-12 17:34:02][streaming]数据文件清洗-->开始
[INFO3] [2017-06-13 17:34:02][streaming]数据文件清洗-->开始

# 匹配所有有数字的行
[service@ndl-bass-ys-vm-129-186 wy]$ grep \'[0-9][0-9]*\' yy.log 
[1info][2017]
[INFO2] [2017-06-12 17:34:02][streaming]数据文件清洗-->开始
[INFO3] [2017-06-13 17:34:02][streaming]数据文件清洗-->开始

2、匹配以 xx 开头的

# 匹配以小写字母开头
# a-z,小写字母;a-zA-Z 字母
[service@ndl-bass-ys-vm-129-186 wy]$ grep \'^[a-z]\' yy.log              
hello,wolrd:nihao
hollo
suscess

# ^[xx] 匹配以xx开头
[service@ndl-bass-ys-vm-129-186 wy]$ grep \'^[ERROR]\' yy.log   
ERROR suscess
ERRORend

# [^xx]反向匹配;^在[]外是以xx开头,^在[]内反向匹配
[service@ndl-bass-ys-vm-129-186 wy]$ grep ^[^a-zA-Z] yy.log
你好
[1info][2017]

3、匹配以 xx 结尾

# 匹配以 ] 结尾的
[service@ndl-bass-ys-vm-129-186 wy]$ grep \']$\' yy.log
[1info][2017]
[infoend] [dsds]

# 以 . 结尾(.是特殊字符,要 转义字符 \\ 匹配)
[service@ndl-bass-ys-vm-129-186 wy]$ grep \'\\.$\' yy.log 
hollo.

 

以上是关于每天一个linux命令grep的主要内容,如果未能解决你的问题,请参考以下文章

每天学一个 Linux 命令:grep

每天一个linux命令grep

每天一个linux命令8之grep高级篇

每天学点Linux命令之grep 和 wc命令

每天学点Linux命令之grep 和 wc命令 ---(6/25)

每天一个linux命令--批处理