Linux文本处理工具之grep

文本处理三剑客之GREP

文本过滤工具:glob 用于实现bash中的文件名通配

  • 通配符:

    *:任意长度的任意字符
    ?:任意单个字符
    [ ]:明确指明匹配范围内的单个字符

    • [abc]:abc中的任意一个
    • 注:要匹配通配符本身,需要使用%转义
  • 常用的字符集合表示法:
    • [:alpha:]:任意字母
    • [:alnum:]:任意数字和字母
    • [:blank:]:任意空白字符
    • [:cntrl:]:任意控制字符
    • [:digit:]:任意数字
    • [:lower:]:任意小写字母
    • [:upper:]:任意大写字母
    • [:space:]:任意空格

      例如:显示/var目录下,以l开头,以小写字母结尾,且中间至少出现一位数字的文件或目录

    • ls -d /var/l[[:digit:]][[:lower:]]

      grep:全局搜索正则表达式并显示出来(文本过滤工具)

      grep:基本正则表达式
      egrep:扩展正则表达式

作用:文本搜索,根据用户指定的内容,对目标文件进行逐行匹配检查,打印匹配到的行

  • 内容(模式):由正则表达式字符和文本符所编写的过滤条件
  • 正则表达式:由一类特殊字符所编写的模式,有些字符不表示字符本身的含义,而表示控制或通配
  • 元字符:表示特殊含义的字符

    grep的使用方法:

  • 格式:grep [选项] 模式 目录或文件
  • --color=auth:对匹配到的内容加颜色显示
  • -m #:匹配#次后停止
  • -n:显示匹配的行行数
  • -c:统计匹配到的行的行号
  • -v:显示不能匹配到的行
  • -i:匹配时忽略字符大小写
  • -o:仅显示匹配到的字符
  • -q:静默模式
  • -A#:显示匹配到的行和后#行
  • -B#:显示匹配到的行和前#行
  • -C#:显示匹配到的行和前后各#行
  • -w:匹配整个单词
  • -E:使用扩展正则表达式
  • -F:使用fgrep
  • -f file:根据模式文件中的内容去匹配

基本正则表达式的元字符:使用引号引起来

  • 字符匹配:

    .:任意单个字符
    []:匹配指定范围内的任意单个字符
    [^]:匹配指定范围之外的任意单个字符

  • 次数匹配:

    :匹配前面的字符任意次数
    .
    :匹配任意长度的任意字符
    \?:匹配前面的字符0次或1次,即前面的字符可有可无
    \+:匹配前面的字符至少出现一次
    \{m\}:匹配前面的字符m次
    \{m,n\}:匹配前面的字符m到n次
    \{m,\}:匹配前面的字符至少出现m次
    \{,m\}:匹配前面的字符至多出现m次

  • 位置锚定:

    ^:匹配的字符出现在行首
    $:匹配的字符出现在行尾
    ^pattern$:用于整行匹配
    ^$:空行
    ^[[:space:]]$:空白行
    \<或\b:词首锚定,用于单词模式左侧
    \>或\b:词尾锚定,用于单词模式的右侧
    \<pattern\>:匹配整个单词

  • 分组:

    \(\):把括号中的内容分组
    \(xy\)*ab:匹配ab前面的xy出现任意次数

  • 后向引用:引用前面分组括号中的模式所匹配到的内容
    • 分组括号中的模式所匹配到的内容,会被正则表达式引擎记录在内部变量中,这些变量被命名为\1,\2,\3……

      • -n:把左侧起第n个左括号以及与之匹配的右括号之间的模式所匹配到的字符
      • 例:(str1+(str2)*)

        \1:str1+(str2)*
        \2:str2

  • 或者:

    \|:

  • 实例:

    a\|b:a或者b
    C\|cat:C或者cat
    \(C\|c\)at:Cat或者cat

扩展正则表达式:egrep

选项与基本正则表达式相同

egrp的元字符:

  • 字符匹配:同grep
  • 次数匹配:同grep,但是不需要转义
  • 位置锚定:同grep
  • 分组:小括号不需要转义
  • 后向引用
  • 或者:| 不需要转义

fgrep:不支持正则表达式,仅仅找给定的字符串

练习:

  1. 显示/proc/meminfo文件中以大小写s开头的行

    grep -i ‘^s.‘ /proc/meminfo
    grep ‘[Ss].
    ‘ /proc/meminfo

  2. 显示/etc/passwd文件中不以bash结尾的行

    grep -v ‘.*bash$‘ /etc/passwd

  3. 显示CentOS7中的/etc/grub2.cfg文件中,至少以一个空白字符开头,且后面有非空白字符的行

    grep -E "^[[:space:]]+[^[:space:]]" /etc/grub2.cfg

原文地址:https://blog.51cto.com/13408885/2395329

时间: 2024-10-28 10:22:10

Linux文本处理工具之grep的相关文章

Linux文本处理工具之grep、egrep和fgrep

一.基本概念 正在表达式:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑. grep(global search regular expression(RE) and print out the line):文本搜索工具,根据用户指定的文本模式对目标文件进行逐行搜索,显示能够被模式所匹配到的行(可以看成一个文本过滤器) egrep:使用扩展正则表达

Linux文本处理工具grep

文件查看工具:cat 将[文件]或标准输入组合输出到标准输出. -A, --show-all                                  等于-vET -b, --number-nonblank                           对非空输出行编号 -e                                              等于-vE -E, --show-ends                                 在每行结

&nbsp; &nbsp; linux 中的文本处理工具,grep,egrep

一:grep与egrep简介:                    grep与egrep是在linux中对linux文本搜索用的比较多的一个工具.它结合正则表达式实现与模型匹配的行. 二:语法格式: grep [option]... 'PATTERN' FILE... 支持基本正则表达式                  egrep [option]... 'PATTERN' FILE...支持扩展正则表达式                  [option]常用的主要有:          

Linux文本处理工具——Grep

Grep简介 全名:Global search Regular expression and Print out the line. 功能:文本搜索工具,根据用户指定的文本模式(搜索条件)对目标文件进行逐行搜索,显示能匹配到的行. Linux的三大文本处理工具之一,可以说学好grep命令无疑是重要的,可以说学好grep也是不容易的,因为grep里面要用到最烦人的正则表达式. grep语法格式 grep [option]... 'PATTERN' FILE... [option]:表示可以跟选项,

linux文本处理工具

linux文本处理工具 1.Linux 文件系统上的特殊权限: SUID     SGID   Sticky 进程的安全上下文:(1)任何一个可执行程序文件能不能启动为进程,取决发起者对程序文件是否拥有执行去权限 (2)启动为进程后,其属主为发起者,属组为发起者所属的组 (3)进程访文件的权限,取决于进程的发起者 (a)  进程的发起者,同文件的属主:则应用文件属主权限                                            (b)  进程的发起者,属于文件属组:则

Linux文本处理工具AWK使用解析

在linux系统上有三大文本处理工具分别是:grep,sed,awk,这次主要来看看awk. awk  option  'pattern'  file -F    指定分隔符: -v     申明自定义变量: 查看当前系统上,用户名和用户shell,输出分隔符为~. # awk -F: 'BEGIN{OFS="~";print "UserName   Shell"}{print $1,$7}END{print "================end===

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

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

文本处理工具之一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 文本处理三剑客之grep &nbsp; egrep

Linux 文本处理三剑客之grep   egrep grep: Global search REgular expression andPrint out the line. 作用:文本搜索工具,根据用户指定的"模式(pattern)"逐行去搜索目标文本,打印匹配到的行. 模式:由正则表达式的元字符及文本字符所编写的过元字符,其中正则表达示分基本正则表达式,和扩展正则正则表达式2类 元字符不表示其字面意义,而用于表示通配或控制功能滤条件.元字符有下面一些 字符匹配: .:匹配任意单个