`
san_yun
  • 浏览: 2654539 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

七种武器:grep

 
阅读更多

grep的功能

grep从一个或多个文本文件中查找符合指定范本(正则表达式)的行,并把查找结果输出到指定设备(默认到屏幕)。

 

语法:

/usr/bin/grep [选项] <范本(正则表达式)> [文件1 ...]

范本是一个单独的词或者是一个用引号括起来的字符串。如果范本包含空格,则范本要用引号括起来。grep默认下把结果输出到屏幕但是并不影响或改变任何被查找的目标文件。
一些特殊字符($, *, [, ^, |, (, ), 和\)的使用要特别小心,因为这些字符在shell里有特殊意义。如果这些字符作为范本的一部份,请用单引号把整个范式括起来。
# grep root /etc/passwd /etc/shadow
/etc/passwd: root:x:0:0:Super-User:/:/sbin/sh
/etc/shadow: root:PdhpgiTZvqa2:13732::::::

备注:黑体部分是文件名

 

grep命令的输入

grep有三种输入来源:标准输入(键盘)、管道和文件。如果你忘了输入目标文件,grep会假定从标准输入设备(键盘)取得输入,直到你按^D(Control+D)。如果是管道,上个命令的输出将被作为grep的输入被处理,并把查找结果输出到指定输出设备。
global$grep mypattern
hello grep
I forget input file(s)
^D
global$

global$ ps -ef | grep root

global$ grep root /etc/passwd /etc/shadow

 

grep命令的返回值(不是查找结果)

### 0 (范本在指定文件里被查找到。)
global$grep root /etc/passwd;echo $?
root:x:0:0:Super-User:/:/sbin/sh
0

### 1 (范本在指定文件里没有查找到)
global$grep roo1t /etc/passwd;echo $?
1

### 2 (指定的目标文件不存在)
global$grep root /etc/passwd1;echo $?
grep: can't open /etc/passwd1
2

备注:Bourn/Korn shell变量,?,返回最后被执行的命令的返回值;C shell变量是status。

 

grep命令的选项

选项
描述
-c
显示符合范本的行的数目而不是显示满足条件的行的内容
-h
不显示文件名
-i
忽略大小写
-l
只列出有满足条件的行的文件的文件名
-n
显示满足条件的行在包含它的文件中的行号
-s
隐形操作,即如果出错不输出任何信息。在用于只检返回值时非常有用。
-v
反向显示,即输出不满足条件的行。

 

grep的正则表达式的元字符

元字符
功能
列子
描述
^
行首
'^love'
匹配所有以love开始的行
$
行尾
'love$'
匹配所有以love结尾的行
.(点)
匹配任意一个字符
'l..e'
匹配所有包含l,紧跟任意2个字符,再跟一个e的行
*
匹配0个或多个字符
' *love'
匹配所有包含0个或多个空格,再跟love的行
[]
匹配一个在集合里的字符
'[Ll]ove'
匹配包含Love或love的行
[^]
匹配一个不在集合里的字符
'[^A-K]ove'
匹配不包含从A-K的字符,紧跟ove的行
\<
词首
'\<love'
匹配所有有任一单词以love为首的行
\>
词尾
'love\>'
匹配所有有任一单词以love为尾的行
\(..\)
标识匹配的一个或多个字符
'\(love\)ing'
标识一个标注以期后面引用,第一个用\1,一次类推,最多有9个;见列子
x\{m\}
x\{m,\}
x\{m,n\}
重复字符x:m次
至少m次
在m次到n次之间
'0\{5\}'
'0\{5,\}'
'0\{5,10\}
如果一个行有:连续5个0,至少连续5个0,连续的0在5到10之间,则满足要求。

 

例子

  • 查找在/etc下以p为首的文件中有那些行包含有root
# 、/usr/bin/grep root /etc/p*
/etc/passwd: root:x:0:0:Super-User:/:/sbin/sh
/etc/project: user.root:1::::

 

  • 输出所有的非空行
$ /usr/bin/grep . $HOME.profile

$ /usr/bin/grep ^$ /etc/passwd | wc -l (本命令统计/etc/passwd里有几行空行)

 

  • 输出/etc/passwd中包含root或者sys的行
$/usr/xpg4/bin/grep -e 'root' -e 'sys' /etc/passwd  或者
$/usr/xpg4/bin/grep -E 'root|sys' /etc/passwd
root:x:0:0:Super-User:/:/sbin/sh
sys:x:3:3::/:

 

  • 输出所有行,此行包含这样的一个单词,它以小写字母打头,紧跟任意个字符,以n结尾
$ grep '\<[a-z].*n\>' /etc/passwd (注意.*,它表示任意个字符,包括空格)

 

  • 输出行,它包含一个3,紧跟着一个点和一个数字,再紧跟任意个字符(.*),再跟一个3(前面标识过了),一个或多个TAB,再跟一个3. 因为3前面被标识过,\(3\),所以后面引用只要用\1就可以了。
$ grep '\(3\)\.[0-9].*\1   *\1' /etc/passwd

注:你可以替换3为任意你想要的其他字符

  • 输出行,这些行有单词至少包含9个连续的小写字母
$grep '[a-z]\{9,\}' /etc/passwd

 

  • 输出当前目录下文件名,这些文件包含有这样子的行,这些行包含有'SE'字符串,忽略大小写。
$ grep -l -i 'se' *

 

egrep(扩展的grep)

元字符
功能
例子
描述
+
匹配一个或多个前导字符
'[a-z]+ove'
匹配一个或多个小写字符,紧跟ove.如love,loove,alove

匹配0个或一个前导字符
'lo?ve'
匹配以l开始,紧跟零个o或者一个o,在跟ve.如lve,love
a|b
匹配a或者b
'love|hate'
匹配love或者hate
()
分组
'lov(able|ly)?'
匹配lovable或者lovly,或者lov

  • 包含S,紧跟h或者u

$ egrep 'S(h|u)' /etc/passwd

分享到:
评论

相关推荐

    七种武器-AIX详细资料

    - `ps -ef | grep |p_name&gt;`: 查找指定PID或进程名的进程。 - `kill [-9] &lt;pid&gt;`: 杀死指定PID的进程。 - `who`: 显示当前登录用户列表。 ##### 2.7 存储管理 - **逻辑卷管理**: - `smit vg`: 管理卷组,包括...

    Linux文本处理命令:awk、sed、grep

    Linux系统中的文本处理工具非常...这些工具虽然功能各有侧重点,但都是处理Linux文本数据的强大武器。通过上述内容的学习,相信你已经对这三个命令有了深入的了解,并能够在实际工作中灵活运用这些工具来提高工作效率。

    day6 三剑客三剑客.docx

    在Linux运维领域,Shell脚本是不可或缺的工具,而正则表达式则是进行数据处理和文本查找的强大武器。"三剑客"通常指的是awk、sed和grep,它们在处理文本和日志时有着各自独特的优势。本文主要关注的是grep命令在正则...

    Linux学习神器:探索高效掌握Linux技能的秘密武器.zip

    其次,描述中的“神器”可能意味着该资料包含了一些实用的技巧和工具,比如SSH远程连接、Vim编辑器的高级用法、grep和sed文本处理工具、以及自动化脚本编写等。这些工具和技巧能够极大提升你在Linux环境中的工作效率...

    Unix课件 四川大学

    7. **文本处理工具**:grep、sed、awk等工具是Unix的强大武器,用于查找、替换、格式化文本,对日志文件等进行高效处理。 8. **Makefile与构建工具**:Makefile用于管理项目依赖,简化程序的编译和链接过程;自动化...

    RHCE技术培训-文本处理工具介绍.pptx

    本单元主要介绍了以下几种工具:less、cat、head、tail、grep、cut、wc、sort、diff和patch。 1. **less 和 cat**: - `cat`命令常用于连接(concatenate)多个文件并将其内容通过STDOUT显示。它也用于查看单个...

    linux与unix shell编程指南

    9. **grep家族**(008grep家族.PDF):`grep`及其相关的工具(如`egrep`、`fgrep`)是搜索文本模式的利器,它们能帮助快速定位和提取文件中的相关信息。 10. **正则表达式的介绍**(007正则表达式的介绍.PDF):...

    Linux常用命令学习

    8. `grep`:搜索文件内容,`grep "keyword" file`查找包含“keyword”的行。 9. `find`:在文件系统中查找文件,`find / -name myfile`在根目录下查找名为myfile的文件。 10. `cat`/`more`/`less`:查看文件内容,...

    管理咨询工具(上册).pdf

    总的来说,管理咨询工具是咨询顾问的有力武器,它们为企业提供了解决问题的系统化框架,促进了企业的战略决策和管理优化。正确运用这些工具,不仅可以提升咨询工作的专业性和效果,也能帮助企业实现持续的改进和发展...

    unix和shell程序设计权威教程

    此外,书中还会涉及正则表达式和grep、sed、awk等文本处理工具的使用,这些都是Unix/Linux环境中强大的数据处理武器。通过学习,读者可以掌握如何在文本数据中快速查找、替换和提取信息。 书中的章节可能涵盖以下几...

    linux资料大全PPT

    - **命令格式**:大多数Linux命令的格式遵循一种通用模式,即`command [options] [arguments]`。例如,在使用`ls`命令列出文件时,可以加上`-l`选项来显示详细信息,并指定`./backups`作为参数来列出`backups`目录下...

    UNIX教程

    3. **文本处理工具**:如grep(搜索文本模式)、sed(流编辑器)、awk(数据处理语言)等,它们是UNIX的强大武器,能够高效地处理和分析文本数据。 4. **进程管理**:UNIX系统中的进程是程序的执行实例。了解fork...

    UNIX教程讲义

    UNIX系统中包含大量的命令行工具,如grep、find、awk、sed等,它们是进行数据处理和系统管理的强大武器。熟练使用这些工具可以极大地提高日常工作的效率。 **第八章:系统管理与安全** 理解用户账户管理、权限设置...

    Linux命令行与shell脚本编程-正则表达式的应用案例

    正则表达式(Regular Expression,简称regex)则是这两种工具中的强大武器,用于文本模式匹配和处理。在“Linux命令行与shell脚本编程-正则表达式的应用案例”中,我们将深入探讨如何在Linux环境中运用正则表达式来...

    Linux常用命令指导

    通过命令`cat /proc/meminfo`可以查看内存信息,或者使用`cat /proc/meminfo | grep MemTotal`来查看内存总量。`MemTotal`字段显示了系统安装的总内存大小,而`MemFree`字段显示了空闲内存大小。另外,`free -m`命令...

    信息集合与备忘录:一个鼓舞人心的列表、手册、备忘录、博客、黑客工具、一行命令、CLI/Web 工具等信息的集合

    比如,`grep`用于搜索文件中的特定文本,`find`帮助查找文件,而`sed`则用于文本处理和流编辑。掌握这些命令可以显著提高你的工作效率。 3. **CLI工具**:命令行工具如curl、jq和git是开发人员的常用武器。curl用于...

    正则表达式

    正则表达式是一种强大的文本处理工具,用于匹配、查找、替换和分析字符串。它由特殊字符(称为元字符)和普通字符组成,可以用来描述一系列的字符串模式。在编程语言中,正则表达式通常被用作字符串操作的库或内建...

Global site tag (gtag.js) - Google Analytics