Linux三剑客之grep命令详解

先来小菜一碟:

  cat /etc/passwd | grep -c "/bin/bash$"

  以上,用来统计/etc/passwd 文件中以/bin/bash结尾的用户个数。

grep用来基于正则去实现行过滤的工具;它有很多衍生命令:

  egrep 扩展的grep,即默认使用扩展正则表达式的grep,更高级。

  fgrep 专用于文件行过滤的工具。

grep命令格式:grep [option] pattern file        option表示选项,pattern 表示要匹配的模式,file表示要查询的文件名

grep命令的常用选项:

  -E    开启扩展正则模式,相当于使用egrep命令

  -F    关闭正则表达式,将PATTERN看做字符串直接匹配

  -G    默认,开启基本正则表达

  -P    开启perl兼容正则模式,利用perl语言中的正则匹配,表示我不会,因此不涉及

  以上,属于pattern匹配方式的选择————————————————————

  -e    该选项针对"-",由于grep默认不支持pattern中包含"-" 的匹配。使用-e可以避免报错。

  -f    将PATTERN写入指定文件,通过该选项,可调用文件中的PATTERN去匹配目标文件

  -i    匹配时,忽略大小写进行

  -v    排除PATTERN,显示剩余没有被匹配到的内容行

  -w    将PATTERN视为一个单词(前后不是非字母就是一个结束),相当于PATTERN中加入了 " \bPATTERN\b"去定界。

  -x    当PATTERN匹配了整行内容时,才输出到屏幕;如

[[email protected] tmp]# cat /etc/passwd |grep "^root"
root:x:0:0:root:/root:/bin/bash
[[email protected] tmp]# cat /etc/passwd |grep -x "^root"
[[email protected] tmp]# cat /etc/passwd |grep -x "^root.*"
root:x:0:0:root:/root:/bin/bash

  以上是帮助PATTERN提高性能的选项——————————————————

  -c    PATTERN成功匹配到内容的次数

  --color=   设置高亮方式,可以用{never|always|auto} 来实现

  -L    当grep目标文件是多个文件时,结果会输出“文件名:匹配行内容”的形式。-L则只将不包含匹配行的文件名输出。和-v类似。

  -R    递归查询匹配目录子文件,当目标文件类型为目录时

  -o    只输出被PATTERN匹配到的内容,而非默认输出整行内容

  -m #   匹配到内容的最大输出行数,如三行包含PATTERN,只输出两行,即可-m 2

  -q    静默执行

  -s    无提示,stderr会被忽略,-sq组合可完全屏蔽grep的输出

  以上是对grep结果的规范选项—————————————————————

  -H    输出文件名,在行内容前,当目标文件为多个时,默认

  -n    显示行号

  以上针对grep结果查看的选项—————————————————————

  -A #    显示匹配行及其后#行内容,理论上共#+1行

  -B #    显示匹配行及其前#行内容,理论上共#+1行

  -C #    显示匹配行及其前后#行内容,理论上共2#+1行

关于grep命令的执行状态码:

    0  成功匹配

    1  未匹配

    2  报错,一般是目标文件不存在

基本正则表达式:

 

    其中,\(  \) 不仅可以用作反向引用的匹配范围,也可以用于组合字符串。如下例:

[[email protected] tmp]# echo "xyz2xyzxy" |grep "xyz\?" -o
xyz
xyz
xy                -----xy被匹配到
[[email protected] tmp]# echo "xyz2xyzxy" |grep "\(xyz\)\?" -o
xyz
xyz      ------xy被为匹配到,由于xyz是一个组合,\?针对的是这个组合而言

扩展正则表达式:

    基于基本正则表达式;

    \?  变为  ?

    \+  变为  +

    \{\}相关的PATTERN一律变为{} 的PATTERN,省去了\标志

    \(\)     变为      ()

    同时引入了 " | " 表示逻辑或,表示匹配多个内容:

      chkconfig --list 3:on |grep -vE "crond|network|sshd|syslog"

原文地址:https://www.cnblogs.com/viviian/p/10119564.html

时间: 2024-08-28 06:49:16

Linux三剑客之grep命令详解的相关文章

linux文本处理三剑客之grep命令详解

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

Linux三剑客值awk命令详解

一.awk介绍 AWK是一种优良的文本处理工具.它不仅是 Linux 中也是任何环境中现有的功能最强大的数据处理引擎之一.这种编程及数据操作语言(其名称得自于它的创始人 Alfred Aho .Peter Weinberger 和 Brian Kernighan 姓氏的首个字母)的最大功能取决于一个人所拥有的知识.AWK 提供了极其强大的功能:可以进行样式装入.流控制.数学运算符.进程控制语句甚至于内置的变量和函数.它具备了一个完整的语言所应具有的几乎所有精美特性.实际上 AWK 的确拥有自己的

linux grep命令详解

linux grep命令详解 http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856896.html grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来. Unix的grep家族包括grep.egrep和fgrep.egrep和fgrep的命令只跟gr

grep命令详解

grep命令是linux下的行过滤工具,其参数繁多,下面就一一介绍个个参数的作用,希望对大家有所帮助.grep -- print lines matching a pattern (将符合样式的该行列出)◎语法: grep [options] PATTERN [FILE...] grep用以在file内文中比对相对应的部分,或是当没有指定档案时, 由标准输入中去比对. 在预设的情况下,grep会将符合样式的那一行列出.此外,还有两个程序是grep的变化型,egrep及fgrep. 其中egrep

文本处理工具之一grep命令详解

grep(Globel Search Regular Expression and Printing out the line)全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,是一个对行进行操作的搜索工作,它能使用正则表达式搜索文本,并把匹配的行打印出来.Unix的grep家族包括grep.egrep和fgrep. egrep表示扩展的grep,相比grep支持更多的元字符,"grep -E"相当于egrep.fgrep是fast grep,不支持元字符,但是搜索速度更快.

Linux上的free命令详解

Linux上的free命令详解 转自: http://www.cnblogs.com/coldplayerest/archive/2010/02/20/1669949.html 解释一下Linux上free命令的输出. 下面是free的运行结果,一共有4行.为了方便说明,我加上了列号.这样可以把free的输出看成一个二维数组FO(Free Output).例如: FO[2][1] = 24677460 FO[3][2] = 10321516 1          2          3    

grep 命令详解及相关事例

一.匹配字符 .    匹配任意单个字符 [ ]  匹配指定范围内的任意字符 [^]  匹配飞指定范围内的任意字符 [:alpha:] 字母字符 [:lower:] 小写字母字符 [:upper:] 大写字母字符 [:digit:] 数字 [:alnum:] 字母数字字符 [:space:] 空白字符(禁止打印),如回车符.换行符.竖直制表符和换页符 [:punct:] 标点字符 [:cntrl:] 控制字符(禁止打印) [:print:] 可打印字符 使用时一般使用两个中括号,具体会在下面的例

Linux CAT与ECHO命令详解 <<EOF EOF

Linux CAT与ECHO命令详解 cat命令是Linux下的一个文本输出命令,通常是用于观看某个文件的内容的: cat主要有三大功能: 1.一次显示整个文件. $ cat filename 2.从键盘创建一个文件. $ cat > filename 只能创建新文件,不能编辑已有文件. 3.将几个文件合并为一个文件. $cat file1 file2 > file cat具体命令格式为 : cat [-AbeEnstTuv] [--help] [--version] fileName 说明:

Ubuntu Linux系统下apt-get命令详解

Ubuntu Linux系统下apt-get命令详解(via|via) 常用的APT命令参数: apt-cache search package 搜索包 apt-cache show package 获取包的相关信息,如说明.大小.版本等 sudo apt-get install package 安装包 sudo apt-get install package - - reinstall 重新安装包 sudo apt-get -f install 修复安装"-f = ——fix-missing&