Linux三剑客之老三grep

说明:

Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。工作中我们常常用它来过滤出我们想要的数据。

格式:

grep [OPTIONS]

基本参数:          

  -i    不区分大小写

  -v   排除内容,即取反

  -n    对匹配到的内容打印相应行号

  -E    使用扩展正则表达式(相当于egrep)

  -r    递归读取目录下的文件(即包括子目录下文件)

  -c    对匹配到的行进行计数

  -o    只显示匹配到的内容

  -A    (after)匹配输出内容行并输出内容行后的指定行

  -B    (before)匹配输出内容行并输出内容行前的指定行

  -C    (context)匹配输出内容行并输出内容行的前后指定行

  --color   过滤的内容显示颜色

建议配置别名:

echo “alias grep=‘grep --color‘” >> /etc/profile //配置别名

       source /etc/profile                                       //重读文件使别名生效

效果:

[[email protected] test]# grep ".*" /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

常见用法:

①   grep -ivnEoc… “匹配内容” 文件名

[[email protected] test]# grep -n "root" /etc/passwd

1:root:x:0:0:root:/root:/bin/bash

11:operator:x:11:0:operator:/root:/sbin/nologin

②   grep -r “匹配内容” 文件目录/*

[[email protected] ~]# grep -r "www" test/*       

test/Caiyun.txt:My blog is http://www.cnblogs.com/Caiyundo/

test/dudu/3.txt:www.cnblog.com/caiyun

③   grep “匹配内容” -A 指定行 文件名

[[email protected] ~]# grep "root:x" -nA 5 /etc/passwd

1:root:x:0:0:root:/root:/bin/bash

2-bin:x:1:1:bin:/bin:/sbin/nologin

3-daemon:x:2:2:daemon:/sbin:/sbin/nologin

4-adm:x:3:4:adm:/var/adm:/sbin/nologin

5-lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

6-sync:x:5:0:sync:/sbin:/bin/sync

④   命令 | grep “匹配内容”

[[email protected] ~]# ps -ef |grep "sshd"

root       1261      1  0 Dec12 ?        00:00:00 /usr/sbin/sshd   

扩展:

正则表达式是为处理大量字符串而定义的一套规则和方法,linux正则表达式常用于linux三剑客中。

测试场景模拟(直接复制粘贴即可):

cat  >>text.txt<<EOF

       My name is Caiyun.

       I like badminton, snooker, running

       Maybe I‘m not a smart person, but I‘m working hard.

       My blog is http://www.cnblogs.com/Caiyundo/

       Welcome to my blog! CAIYUN

       My qq is 791111890

       My mail is [email protected]

       EOF

一、 基础正则表达式

 ^ 表示以...字符开头,^word

[[email protected] test]# grep -n "^My" text.txt

1:My name is Caiyun.

5:My blog is http://www.cnblogs.com/Caiyundo/

8:My qq is 791111890

9:My mail is [email protected]

$    表示以...字符结尾,word$

[[email protected] test]# grep -n "\.$" text.txt 

1:My name is Caiyun.

4:Maybe I‘m not a smart person, but I‘m working hard.

9:My mail is [email protected].

^$ 表示空字符,即可理解为空行

[[email protected] test]# grep -n "^$" text.txt  

3:

7:

.     表示匹配任意单个字符

[[email protected] test]# grep -n "b." text.txt 

2:I like badminton, snooker, running

4:Maybe I‘m not a smart person, but I‘m working hard.

5:My blog is http://www.cnblogs.com/Caiyundo/

6:Welcome to my blog! CAIYUN

\     表示转义符

[[email protected] test]# grep -n "\.$" text.txt

1:My name is Caiyun.

4:Maybe I‘m not a smart person, but I‘m working hard.

9:My mail is [email protected].

*     表示重复前面0个或1个以上字符

[[email protected] test]# grep -n "bl*" text.txt 

2:I like badminton, snooker, running

4:Maybe I‘m not a smart person, but I‘m working hard.

5:My blog is http://www.cnblogs.com/Caiyundo/

6:Welcome to my blog! CAIYUN

.*    表示匹配所有

[[email protected] test]# grep -n ".*" text.txt   

1:My name is Caiyun.

2:I like badminton, snooker, running

3:

4:Maybe I‘m not a smart person, but I‘m working hard.

5:My blog is http://www.cnblogs.com/Caiyundo/

6:Welcome to my blog! CAIYUN

7:

8:My qq is 791111890

9:My mail is [email protected]

[]     表示匹配"[]"里面任意单个字符

[[email protected] test]# grep -n "[791]" text.txt  

8:My qq is 791111890

9:My mail is Caiyun111111@gmail.com.    

[^]   表示取反"[^]"里面的任意单个字符

[[email protected] test]# echo Caiyun >> test2.txt

[[email protected] test]# echo 791111890 >> test2.txt       

[[email protected] test]# grep -n "[^0-9]" test2.txt

1:Caiyun

[-]   表示匹配"[-]"里一段字符的任意单个字符,如[0-9]即0到9

[[email protected] test]# grep -n "[0-9]" text.txt   

8:My qq is 791111890

9:My mail is Caiyun111111@gmail.com.

1\{4\}     表示匹配字符 "1" 重复4次

[[email protected] test]# grep -n "1\{4\}" text.txt

8:My qq is 791111890

9:My mail is Caiyun1111[email protected]

1\{5,\}    表示匹配字符 "1" 重复5次或5次以上

[[email protected] test]# grep -n "1\{5,\}" text.txt 

9:My mail is Caiyun111111@gmail.com.

1\{,6\}    表示匹配字符 "1" 重复6次和6次以内

[[email protected] test]# grep -n "1\{,6\}" text.txt 

1:My name is Caiyun.

2:I like badminton, snooker, running

3:

4:Maybe I‘m not a smart person, but I‘m working hard.

5:My blog is http://www.cnblogs.com/Caiyundo/

6:Welcome to my blog! CAIYUN

7:

8:My qq is 791111890

9:My mail is Caiyun111111@gmail.com.

1\{3,5\}  表示匹配字符 "1" 重复3-5次

[[email protected] test]# grep -n "1\{3,5\}" text.txt     

8:My qq is 791111890

9:My mail is Caiyun11111[email protected]

二、扩展正则表达式

+     表示重复 "一个或一个以上" 前面的所有字符("*"是0个)

[[email protected] test]# grep -n "11111*" text.txt   

8:My qq is 791111890

9:My mail is Caiyun111111@gmail.com.

[[email protected] test]# grep -n "11111\+" text.txt 

9:My mail is Caiyun111111@gmail.com.

?     表示重复 "0个或一个" 前面的字符("."是有且只有1个)

[[email protected] test]# grep -n "11111." text.txt  

9:My mail is Caiyun111111@gmail.com.

[[email protected] test]# grep -n "11111\?" text.txt 

8:My qq is 791111890

9:My mail is Caiyun11111[email protected]

 |     表示过滤多个字符串

[[email protected] test]# grep -nE "CAIYUN|mail" text.txt 

6:Welcome to my blog! CAIYUN

9:My mail is [email protected]mail.com.

[[email protected] test]# grep -n "CAIYUN\|mai" text.txt  

6:Welcome to my blog! CAIYUN

9:My mail is [email protected]mail.com.

一般情况下,当我们需要用到扩展正则表达式匹配符时,使用grep要加参数 ”-E” 或用 “\” 转译符转义匹配符

三、元字符

\b    边界字符,单词边界

[[email protected] test]# grep ‘Caiyun‘ text.txt  

My name is Caiyun.

My blog is http://www.cnblogs.com/Caiyundo/

My mail is Caiyun[email protected]

[[email protected] test]# grep ‘Caiyun\b‘ text.txt

My name is Caiyun.

grep的用法还有很多,只要符合规则、逻辑,还可以和很多其他命令配合使用。

PS:要活学活用,多用多练。

原文地址:https://www.cnblogs.com/Caiyundo/p/8044179.html

时间: 2024-10-14 04:27:35

Linux三剑客之老三grep的相关文章

linux三剑客之老三-grep

最近在看视频学习Linux,发现自己原来学习的linux都是一些皮毛,简直无法在实际工作中使用,为此,特记录自己学习的过程. ???????? linux三剑客之老三-grep ???????? 功能:过滤出需要的内容: ???????? 参数 ????????? 针对此参数,我一一举例来说明 ,以方便自己及技术男使用 [[email protected] ~]# cat -n a.txt ???? 1? jc.wang???? 2? 1wang???? 3? 12.3jc.???? 4? 1w

Linux 三剑客 -- awk sed grep

顶配awk,中配sed,标配grep 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件等等.如果我们相对这些文件进行一些编辑查询等操作时,我们可能会想到一些vi,vim,cat,more等命令.但是这些命令效率不高,这就好比一块空地准备搭建房子,请了10个师傅拿着铁锹挖地基,花了一个月的时间才挖完,而另外一块空地则请了个挖土机,三下五除二就搞定了,这就是效率.而在linux中的"挖土机"有三种型号:顶配awk,中配sed,标配grep.使用这些工具,我们能够在达到

不看绝对后悔的Linux三剑客之grep实战精讲

三.Linux三剑客之grep命令精讲 [命令简介]Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户. [功能说明]grep***** ==擅长过滤器,把想要的或者不想要的分离开.Linux三剑客 老三. [用法格式]grep [选项]... PATTERN [FILE]... [参数选项][options]主要参数

Linux三剑客之grep常用参数详细总结

三剑客grep总结 grep  : Linux三剑客老三      过滤需要的内容 参数: grep一般常用参数: -a :在二进制文件中,以文本文件的方式搜索数据 -c :计算找到 ’ 搜索字符串 ‘ 的次数 -o :仅显示出匹配regexp的内容(用于统计出现在文中的次数) -i  :忽略大小写的不同,所以大小写视为相同*************** -n :匹配的内容在其行首显示行号************** -v :反向选择,即显示没有 ’ 搜索字符串 ‘ 内容的那一行****** -

Linux三剑客之grep

linux三剑客之grep grep命令是一个强大的文本搜索工具,全称是Global Regular Expression Print,它能使用正则表达式搜索文本,并把匹配的行打印出来,使用权限是所有用户 1.使用格式 grep [OPTIONS] PATTERN [FILE...] grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...] grep 关键词 文本文件 2.比较常用的参数 -c:仅显示找到的次数 -i:忽略大小写 -n:显示行号 -o:只显示

Linux 三剑客之一--&gt;grep

======================================================================================== * ######------ Linux 正则表达式 ------###### * ######------ 三剑客 grep 文本过滤 ------######*/==============================================================================

Linux三剑客之grep、egrep及正则表达式使用详解

Linux三剑客是Linux中非常强悍的文本处理工具,掌握三剑客,文处理已想必会有三剑在手,天下我有的感觉,三剑客之grep家族擅长文本搜索,支持以正则表达式进行文本搜索,使得grep非常强悍,以下内容就grep,egrep和正则表达式展开 Linux文本工具三剑客:        grep.egrep.fgrep:文本搜索工具 sed:流编辑器,也是行编辑器 awk:文本格式化工具,文版报告生成器 正则表达式:是由一类字符所书写出的模式(pattern) 作用:配合支持使用正则表达式的文本搜索

linux文本处理三剑客之一:grep

linux文本处理三剑客之一:grep grep:文本过滤(模式:pattrn)工具 grep,egrep, fgrep(不支持正则表达式搜索) sed:stream edittor 文本编辑工具 awk:linux上的实现gawk,文本报告生成器 1. grep grep :Global search REguar expression and Print out the line 作用:文本搜索工具,根据用户指定的"模式"对目标文本逐行进行匹配检查:打印匹配到的行 模式:有正则表达

话.linux三剑客之利刃出鞘

剑客起源于唐代传奇的中国武侠小说中,他们所使用的兵器剑的地位是至高无上的,一直也是兵器中的王者,符合了剑在中国古代社会的地位.今天给大家详细的总结一下linux系统下的利刃兵器:awk.sed.grep 三剑客介绍(grep.sed.awk) 老三:grep 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来 # grep 常用选项  -c #只输出匹配行的计数  -i #不区分大小写  -h #查询多文件时不显示文件名  -l #查询多文件时只输出包含匹配字符的文件名