grep, egrep, fgrep - print lines matching a pattern

  SYNOPSIS
    grep [OPTIONS] PATTERN [FILE...]
    grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]

linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来,grep全称是Global Regular Expression Print

1. 常用选项:

  -E, --extended-regexp: Interpret PATTERN as an extended regular expression.   # 开启扩展(Extend)的正则表达式

  -i, --ignore-case: Ignore case distinctions in both the PATTERN and the input files.   # 忽略大小写

  -v, --invert-match: Invert the sense of matching, to select non-matching lines.  # 反过来,只打印没有匹配的,而匹配的反而不打印

-n, --line-number: Prefix each line of output with the 1-based line number within its input file.  # 显示行号

  -w, --word-regexp  # 被匹配的文本只能是单词,而不能是单词中的某一部分,如文本中有liker,而我搜寻的只是like,就可以使用-w选项来避免匹配liker

    Select only those lines containing matches that form whole words. The test is that the matching substring must either be at the beginning of the line, or preceded by a non-word

    constituent character. Similarly, it must be either at the end of the line or followed by a non-word constituent character. Word-constituent characters are letters, digits, and the
    underscore.

  -c, --count: Suppress normal output; instead print a count of matching lines for each input file.  # 显示总共有多少行被匹配到了,而不是显示被匹配到的内容,注意如果同时使用-cv选项是显示有多少行没有被匹配到。

  -o, --only-matching: Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line.  # 只显示被模式匹配到的字符串。

  -A NUM, --after-context=NUM: Print NUM lines of trailing context after matching lines.   # 显示匹配到的字符串所在的行及其后NUM行

  -B NUM, --before-context=NUM: Print NUM lines of leading context before matching lines.  # 显示匹配到的字符串所在的行及其前NUM行

  -C NUM, -NUM, --context=NUM: Print NUM lines of output context.  # 显示匹配到的字符串所在的行及其前后各NUM行

2. 模式部分:

  (a)基本正则表达式

    匹配字符

      .  : 任意一个字符

      [abc] : 表示匹配[abc]中任意一个字符

      [a-zA-Z] : 匹配a-z或A-Z之间任意一个字符

      [^123] : 匹配123之外的任意一个字符

  

      对于常用的字符集,系统定义如下:

        [a-zA-Z] <=> [[:alpha:]]

        [0-9] <=> [[:digit:]]

        [a-zA-Z0-9] <=> [[:alnum:]]

        tab,space <=> [[:space:]]

        [A-Z] <=> [[:upper:]]

        [a-Z] <=> [[:lower:]]

        标点符号 <=> [[:punct:]]      

    

    匹配次数:

      \{m,n\} : 匹配其前出现的字符至少m次,至多n次

      \? : 匹配其前出现的内容0次或1次,等价于\{0,1\}

      * : 匹配其前出现的内容任意次,等价于\{0,\} ,所以".*"表示任意字符任意次 

    位置锚定:

      ^ : 锚定行首

      $ : 锚定行尾。 常用技巧 "^$"匹配空白行

      \b或者\<: 锚定单词的词首。 如"\blike" 不会匹配alike,但是会匹配liker

      \b或者\> : 锚定单词的词尾。 如\blike\b 不会匹配alike或者liker,只会匹配like

      \B : 与\b作用相反

    分组及引用:

      \(string\) : 将string作为一个整体方便后面引用

      \n : 引用第n个左括号及其对应的右括号所匹配的内容

3. 扩展的(Extend)正则表达式:

  匹配字符: 这部分和基本正则表达式一致

  匹配次数:

    * : 和基本正则表达式一致

    ? :  相比基本正则表达式没有\

    {m,n} : 相比基本正则没有\

    + : 匹配其前面的字符至少一次,相当于{1,}

  位置锚定: 这部分和基本正则表达式一致

  分组及引用: 

    (string) : 相比基本正则表达式没有\

    \n : 和正则表达式一样

  或者:

    a|b : 匹配a或者b, 注意a是指 | 的左边的整体,b也同理,比如C|cat,表示的是C或者cat,而不是Cat或者cat,如果要表示Cat或者cat,则应该写为(C|c)at。(String)除了用于引用还用于分组

    

注1:默认情况下,正则表达式的匹配工作在贪婪模式下,也就是说它会尽可能长地去匹配,比如某一行有字符串 abacb,如果搜索内容为 "a.*b" 那么会直接匹配 abacb这个串,而不会只匹配ab或acb。

注2:所有的正则字符,如 [ 、* 、( 等,若要搜索 * ,而不是想把 * 解释为重复先前字符任意次,可以使用 \* 来转义。

转载于:https://www.cnblogs.com/z-joshua/p/10043357.html

linux命令系列 grep相关推荐

  1. (5)ps详解 (每周一个linux命令系列)

    (5)ps详解 (每周一个linux命令系列) linux命令 ps详解 引言:今天的命令是用来看进程状态的ps命令 ps 我们先看man ps ps - report a snapshot of t ...

  2. linux命令系列-zip(压缩打包)

    转自:https://www.jianshu.com/p/311b28456ff5 linux命令系列-zip(压缩打包) 原文地址http://www.daileinote.com/computer ...

  3. (4)top详解 (每周一个linux命令系列)

    (4)top详解 (每周一个linux命令系列) linux命令 top详解 引言:今天的命令是用来看cpu信息的top top 我们先看man top top - display Linux pro ...

  4. Linux命令之grep用法

    Linux命令之grep用法 Usage: grep [OPTION]- PATTERN [FILE]- 用法: grep [选项]-模式 [文件]. Search for PATTERN in ea ...

  5. Linux命令之 —— grep \ls \ ll \ sed \ bg fg \ ipset \ wc \ ifconfig \ awk

    0. grep命令 1. Linux ls  -ld 1 2. Linux 中ls -l // ll 命令详解  (7个字段):文件属性 1 3. shell中的if判断 4. Linux中 > ...

  6. Linux 命令之 grep -- 强大的文本搜索工具/正则表达式搜索

    文章目录 一.命令介绍 二.grep 的三种形式 三.常用选项 四.正则表达式 五.参考示例 在指定的文件中查找指定的关键词 查看指定文件中含有特定关键词的文本行 查看指定文件中所有包含数字的行 在指 ...

  7. linux命令之grep 命令

    Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达 ...

  8. linux 命令:grep、egrep、ngrep、kill、pkill、killall

    1.grep 帮助:grep --help 用法:grep [OPTION]...patterns[FILE]... 示例:grep -i 'hello world' menu.h main.c    ...

  9. linux 测试网络_Linux后台开发:Linux命令系列18-ping测试网络

    ping命令是用于检测网络故障的常用命令,可以用来测试一台主机到另外一台主机的网络是否连通. 语法 ping [-dfnqrRv][-c][-i][-I][-l][-p][-s][-t][主机名称或I ...

  10. linux命令grep如何使用,Linux命令之grep命令简单使用

    正则表达特殊符号 WeChat Image_20181222173728.png grep命令-字符串搜寻 -a :将 binary 档案以 text 档案的方式搜寻数据 -c :计算找到 '搜寻字符 ...

最新文章

  1. 根据双眼的坐标对齐人脸Python实现
  2. java金钱千分位处理_java对金额的处理,保留两位小数、千分位符
  3. 无线抄表免费透传云服务器,两个WIFI模块USR-WIFI232-B2连接有人云实现远程一对一透传...
  4. HarmonyOS之LED灯和振动器Vibrator的功能和使用
  5. java反射 获取局部变量_Java反射:如何获取变量的名称?
  6. 女士细线毛衣起多少针_从起针到缝合,教你织毛衣的各种要点(详细教程)
  7. mysql 游标的简单_mysql 简单游标
  8. selenium上传文件方法
  9. 计算机网络课程设计即时通讯,计算机网络课程设计报告-基于LAN的即时通信软件.doc...
  10. 一次library cache pin故障的解决过程
  11. Atitit.ide eclipse编译速度慢的解决
  12. 清华linux网络编程视频,清华大学视频课件:基于Linux的C++(自主模式)
  13. matlab 求导的一个简单程序
  14. 黑龙江省谷歌高清卫星地图下载
  15. 搭建 IPv6 Web服务器
  16. 字节架构师:来说说 Kafka 的消费者客户端详解,你都搞懂了吗。
  17. e1000e_probe 其实是e1000_probe
  18. python获取当日、本周、本月、昨日、上周、上月时间
  19. Java面试题集(86-115)
  20. 怎样学Java才是硬道理

热门文章

  1. 计算机低级格式化,硬盘格式化之低级格式化
  2. win10文件误删除怎么恢复,不能错过的恢复方法
  3. 怎么设置计算机语言中文,Windows10 IE11浏览器怎么把默认语言设置为中文
  4. 5款自动爬取数据的神器!
  5. 批量采集抓取淘宝宝贝上传,采集商品软件
  6. stm32驱动TFTLCD液晶屏显示图片+汉字(快速上手,只教怎么用,不讲原理!)
  7. 阿里企业邮箱产品优势、功能、版本介绍
  8. 中国20强游戏公司2022上半年年报分析:复合因素下业绩增长承压,海外新兴市场蕴含增长新趋势
  9. Android Studio使用WIFI调试应用
  10. 人工智能相关专利分析: 会比其他常见的计算机软硬件领域更难申请吗?