每天一个linux命令

参考:

【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、搜索文件中的字段/行(以以下 yy.log 文件为例)

# 打印有 "hello"的行,不区分大小写,标行号、颜色

[service@ndl-bass-ys-vm-129-186 wy]$ grep -in--color=auto hello yy.log2:hello,wolrd:nihao

3:HELLO

# 同时有 xx和xxx 的行

[service@ndl-bass-ys-vm-129-186 wy]$ grep -E'WARNING|FATAL'a.log WARNING fsjfsWARNING hello:FATAL/IGNOR

#打印没有"hello"的行

[service@ndl-bass-ys-vm-129-186 wy]$ grep -v hello yy.log ERROR suscessHELLO

# 打印没有 hello 和 error 的行

[service@ndl-bass-ys-vm-129-186 wy]$ grep -v hello yy.log |grep -iv errorHELLO

# 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:nihaoHELLOsuscess

2、搜索文件

#搜索当前目录带 error 的文件

[service@ndl-bass-ys-vm-129-186 wy]$ grep -i error *

Binary file clean.jar matches

new:ERROR suscess

yy.log:ERROR suscessyy.log:ERRORend

#当前目录及其子目录

[service@ndl-bass-ys-vm-129-186 wy]$ grep -r ERROR *

new:ERROR suscessyy.log:ERROR suscessyy.log:ERRORend

#当前目录及其子目录,只显示文件名,不显示具体行

[service@ndl-bass-ys-vm-129-186 wy]$ grep -r -l ERROR *

newyy.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:nihaohollosuscess

#^[xx] 匹配以xx开头

[service@ndl-bass-ys-vm-129-186 wy]$ grep'^[ERROR]'yy.log ERROR suscessERRORend

#[^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.

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180321G18GPW00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券