Shell三剑客_1.grep

1.grep

?grep:global regular expression print__全局正则表达式输出。

?grep 命令用于查找(过滤)文件里符合条件的字符串。

?grep与正则表达式联系紧密。

■语法

grep -[参数] <文件名>

■常用参数

  • -A<n(行数)> : 抽出并显示符合要查询内容的行,并显示该行之后n行的内容。
  • -B<n(行数)> : 抽出并显示符合要查询内容的行,并显示该行之前n行的内容。
  • -c : 显示符合要查询内容行的行数数。
  • -i  : 忽略字符大小。
  • -n  : 抽出并显示符合要查询内容的行,并在结果行前标示出该行的编号。
  • -v  : 抽出并显示符合要查询内容以外的所有行。

■实例

?grep -A<n(行数)> filename

拷贝/etc/passwd到/home/yubx目录下

[[email protected]01 yubx]# cp /etc/passwd /home/yubx

用vi/vim命令修改文件,修改后的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
 7 dbus:x:81:81:System message bus:/:/sbin/nologin
 8 polkitd:x:999:998:User for polkitd:/:/sbin/nologin
 9 sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
10 postfix:x:89:89::/var/spool/postfix:/sbin/nologin
11 chrony:x:998:996::/var/lib/chrony:/sbin/nologin
12 apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
13 tomcat:x:1000:1000::/home/tomcat:/bin/bash
14 oracle:x:1001:1006::/home/oracle:/bin/bash
15 tomcat0101abcaaaaccc
16 1dddddddddkkkkkkkkkkkkkkkkkaaaaa
17 2fffffffffffffffffff
18 3aaaaaaaaaaaaaa
19 4hhhhhhhhhhhhhhh
20 5ggggggggggggggggggg
21 ~
22 ~ 

命令执行结果:

 1 [[email protected] yubx]# grep -A1 ‘tomcat‘ passwd
 2 tomcat:x:1000:1000::/home/tomcat:/bin/bash
 3 oracle:x:1001:1006::/home/oracle:/bin/bash
 4 tomcat0101abcaaaaccc
 5 1dddddddddkkkkkkkkkkkkkkkkkaaaaa
 6 [[email protected] yubx]# grep -A3 ‘tomcat‘ passwd
 7 tomcat:x:1000:1000::/home/tomcat:/bin/bash
 8 oracle:x:1001:1006::/home/oracle:/bin/bash
 9 tomcat0101abcaaaaccc
10 1dddddddddkkkkkkkkkkkkkkkkkaaaaa
11 2fffffffffffffffffff
12 3aaaaaaaaaaaaaa
13 [[email protected] yubx]# grep -A10 ‘tomcat‘ passwd
14 tomcat:x:1000:1000::/home/tomcat:/bin/bash
15 oracle:x:1001:1006::/home/oracle:/bin/bash
16 tomcat0101abcaaaaccc
17 1dddddddddkkkkkkkkkkkkkkkkkaaaaa
18 2fffffffffffffffffff
19 3aaaaaaaaaaaaaa
20 4hhhhhhhhhhhhhhh
21 5ggggggggggggggggggg
22 [[email protected]01 yubx]#

解析:

从文件内容中我们可以看到,含有”tomcat“字符的行有两行,分别是第13行和第15行。

  • -A1的场合,符合搜索内容的行被抽出,并且相对目标行后1行的内容也被抽出来了。
  • -A3的场合,符合搜索内容的行被抽出,并且相对目标行后3行的内容也被抽出来了。
  • -A10的场合,符合搜索内容的行被抽出,并且相对目标行后10行的内容也被抽出来了。(文件中最多只有5行)

综上,-A<n>的意思就是抽出并显示符合检索内容的目标行,以及该目标行所有n行的内容。

?grep -B<n(行数)> filename

作用:抽出并显示符合检索内容的目标行,以及该目标行所有n行的内容。

※:由于-B和-A的作用差不多,这里就不举例了。

?grep -c ‘要查询的字符串‘ filename

作用:只打印匹配的文本行的行数,不显示匹配的内容。

例:基于上面的passwd文件,执行下面命令。

[[email protected]01 yubx]# grep -c ‘tomcat‘ passwd
2

上面的执行结果的意思是,passwd文件中有两行内容中含有”tomcat“字符串。

?grep -i  ‘要查询的字符串‘ filename

作用:只打印匹配的文本行的行数,不显示匹配的内容。

例:基于上面的passwd文件,追加一行如下内容。

... ... 

4hhhhhhhhhhhhhhh
5ggggggggggggggggggg
TOMCAT123456uuusssaaadd
~    

执行下面的命令:

[[email protected]01 yubx]# grep -i ‘TOMCAT‘ passwd
tomcat:x:1000:1000::/home/tomcat:/bin/bash
tomcat0101abcaaaaccc
TOMCAT123456uuusssaaadd
[[email protected]-ap-01 yubx]# grep -i ‘tomcat‘ passwd
tomcat:x:1000:1000::/home/tomcat:/bin/bash
tomcat0101abcaaaaccc
TOMCAT123456uuusssaaadd
[[email protected]-ap-01 yubx]# 

?grep -n  ‘要查询的字符串‘ filename

作用:抽出并显示符合要查询内容的行,并在结果行前标示出该行的编号。

例:基于上面的文件,执行下面的代码

[[email protected] yubx]# grep -n ‘tomcat‘ passwd
13:tomcat:x:1000:1000::/home/tomcat:/bin/bash
15:tomcat0101abcaaaaccc
[[email protected] yubx]#

上面执行结果中的「13、15」是目标行所在文件中的行编号。

?grep -v ‘要查询的字符串‘ filename

作用:抽出并显示符合要查询内容以外的所有行。

例:基于上面的文件,执行下面的代码

[[email protected]01 yubx]# grep -v ‘tomcat‘ 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
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
oracle:x:1001:1006::/home/oracle:/bin/bash
1dddddddddkkkkkkkkkkkkkkkkkaaaaa
2fffffffffffffffffff
3aaaaaaaaaaaaaa
4hhhhhhhhhhhhhhh
5ggggggggggggggggggg
TOMCAT123456uuusssaaadd
[[email protected]-ap-01 yubx]# 

从上面的执行结果可以看出,含有"tomcat"的那两行没有被打印出来。

■写在最后

这里只举了几个grep常用的,操作字符串的例子。

这只是grep强大功能的冰山一角。

还有很多参数这里并没有介绍。具体的参数以及参数作用可以用 「grep --help」查看。

grep更强大的功能是和正则连用,并且很多参数可以组合使用。

在后续的【linux正则】随笔中,还会陆续讲解grep功能。

以上。

原文地址:https://www.cnblogs.com/yubx/p/12506189.html

时间: 2024-07-31 19:16:30

Shell三剑客_1.grep的相关文章

shell三剑客之grep!

背景 对于很多的测试人员来说,grep命令都很熟悉,用的最多的比如去查找指定的进程:ps -ef | grep *** 其中***为进程名或进程号,这里我们只用到的grep的最基础功能-从标准输出中过滤指定的字符串,实际上grep的功能远不止如此. 这篇文章给大家来介绍下grep的进阶及高阶用法,来帮助我们在测试工作中提升效率. grep的全称:Global search Regular Expression and Print out the line. 是一种强大的文本搜索工具,它能使用特定

shell三剑客之grep

前言 grep怎么出来的? 这就需要我们庖丁解牛了,"g/RE/p"看到没,就是这样"global Regular Expression print"==>"全局查找正则表达式(RE)并且打印结果行." grep家族由命令grep,egrep和fgrep组成.后两者是前者的变体.一个胖了,一个瘦了而已. 使用grep的好处就在于,不需要启动编辑器就可以执行查找操作,也用不着把pattern放在"//"里,使用grep要比

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文本处理三剑客之grep

  一.linux文本处理三剑客介绍 linux中文本三剑客包括grep(egrep,fgrep),sed,awk,三者基本的功能如下: 工具名称 功能 grep,egrep,fgrep 文本过滤工具(搜索工具) sed stream editor, 流编辑器:文本编辑工具 awk 文本报告生成器 二.grep工具详解 1.grep的介绍: grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行

linux 文件管理和文本三剑客之一grep,以及正则的使用

1:文件权限 用户对文件的访问有三种:r(读),w(写),x.对于文件和目录有点区别. 文件: r:使用文本查看工具可以查看其文件内容. w:使用文本编辑工具可以编辑其文件内容. x:可向内核请求将此文件运行为进城执行. 目录: r:可以使用ls命令列出文件下子目录和文件的列表. w:可以在此目录中创建和删除文件. x:可使用'ls -l'命令列出目录及子目录的文件属性,可以使用cd切换工作目录为制定目录. 文件权限主要针对三类对象进行定义. owner:属主  , group:属组, othe

文本处理三剑客之grep

文本处理三剑客之grep 正则表达式(regex) 文本处理工具 grep egrep 试验环境:CentOS 7.2 正则表达式 Linux的哲学之一"一切皆文件",学习Linux应得掌握其基本的文本处理工具,这些工具主要包括: 文件内容:less和cat 文件截取:head和tail 文件抽取:cut 关键字搜索:grep 正则表达式是计算机科学中的一个概念,又称作regex或RE, 正则表达式诞生于对神经网络研究的需要,随着技术发展,正则表达式已经广泛应用于各个领域,其主要应用对

Linux文本处理三剑客之grep一族与正则表达式

一,grep一族是什么? Linux上有三种常用的文本处理工具,分别为:grep(egrep.fgrep).sed.awk.这三者被称为Linux文本处理三剑客. grep一族:文本搜索工具 grep:支持使用基本正则表达式: egrep:支持使用扩展正则表达式,相当于grep -E: fgrep:不支持使用正则表达式,相当于grep -F; [PS:fgrep不需要加载正则表达式引擎,因此速度较快,fgrep的搜索效率在当文件达到几亿行时就能体现出来.(大型web网站一天的日志量都是几亿行的,

llinux文本三剑客之grep、egrep及相应的正则表达式和用法

Linux文本三剑客之grep族以及相应的正则表达式 Grep族是什么? Grep族是linux学习中搜索文本的重要工具,它基于使用正则表达式来快速简洁的搜索你想要查看的文本.是搜索文本的不二之选 什么时候及在哪里使用grep呢? 上面咱们说到了,grep是文本搜索工具,所以当我们要搜索文本,有搜索文本的需要时我们就可以是使用grep工具. 下面我们来谈谈如何使用grep族命令以及涉及到的正则表达式的内容 文本搜索工具:grep族:grep, egrep, fgrep Linux上文本处理三剑客

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

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