linux工具——grep文本处理器

2022-03-15 08:27:54 浏览数 (1)

整理一下grep常用操作,就当记笔记啦

一、介绍

grep是Linux中最常用的"文本处理工具"之一,全称是Global Regular Expression Print,结合正则表达式,功能超级强大

二、使用格式

Usage: grep [OPTION]... PATTERN [FILE]... (grep --help提示)

option:grep 使用参数

pattern:正则表达式

三、常用参数

-o:只显示符合条件的字符串,每个符合条件的字符串单独显示一行

-P:表示使用兼容perl的正则引擎(个人超级喜欢用)

-r: 递归查找

-i:忽略大小写

-n:显示结果所在行号

-c:统计匹配到的行数

-v:输出不带关键字的行

-w:匹配整个单词

-A(B/C)x:在输出的时候包含结果所在行之后(前/前后)的指定行数

A:after,B: before, C:context/center

注:Cx 中 C可以省略

-e:实现多个选项的匹配

-f:指定规则文件

-l(L):查询多文件时只输出包含(不)匹配字符的文件名。

-d: skip 忽略子目录

四:应用实例

新建文档tmp.txt,内容如下

  • 最基本用法

grep 'name' tmp.txt

  • -i:忽略大小写

想把Name 这一行也搜索出来 :grep -i 'name' tmp.txt

  • -c:统计匹配到的行数

grep -ic 'name' tmp.txt

  • -n:显示结果所在行号

grep -in 'name' tmp.txt

  • -o :只显示符合条件的字符串,每个符合条件的字符串单独显示一行

grep -ino 'name' tmp.txt

  • -A(B/C)x:在输出的时候包含结果所在行之后(前/前后)的指定行数

grep -iA2 'name' tmp.txt

  • -w:匹配整个单词

grep -iw 'hanli' tmp.txt

(hanlilaopo不是一个单词,所以此行没grep出来)

  • -v:输出不带关键字的行(反向查询,反向匹配)

grep -v 'nangongwan' tmp.txt

  • -e:匹配多个选项

grep -e 'addr' -e 'Addr' tmp.txt

  • -P:表示使用兼容perl的正则引擎 (个人非常喜欢的一个,重点)

grep -P '(a|A)ddr' tmp.txt(跟前面效果一样)

小例子:

1)查找自己java进程:

ps -ef | grep -i java| grep -v 'grep'

ps -ef | grep -i [j]ava

下面一个命令取了个巧,朋友们能看出来吗。。。

2)过滤掉空行:

grep -vP '^$' filename

grep "." filename

上面一个更通用,因为正则表达式还能改成过滤空格(注释)之类的

3)有时候你写过一个脚本,但是记不住了,只记得零星内容,就可以使用递归查找:

grep -r "记得的内容" .

4)查看日志,只关注特定关键词的行:

tail -f xxx.log | grep -i 'aaaa'

5)统计一段时间内 日志中出现次数

grep -i 'aaa' xxx.log | wc -l

grep -ic 'aaa' xxx.log

grep 强大远超我们的想象,配合正则表达式,能发挥出想象不到的威能,具体的功能还需要大家一起摸索呀。。。

0 人点赞