版权声明: https://blog.csdn.net/zdp072/article/details/26015611

[ grep简单介绍: ]

grep是用来过滤含有特定字符的行, 能使用正則表達式搜索文本, 它在数据中查找一个字符串时, 是以正行为单位进行数据选取的.
使用方法: grep [cinvs] 'pattern' file
比如: grep -n 'bbb' aaa.txt --color                     # 从文件aaa.txt中搜索关键词bbb, 并显示行号和高亮显示。

[ 经常使用选项: ]

-c:仅仅输出匹配行的计数。
-i:不区分大写和小写(仅仅适用于单字符)。
-n:显示匹配行及行号。
-s:不显示不存在或无匹配文本的错误信息。

-v:显示不包括匹配文本的全部行。

[ 正则元字符: ]

grep能够结合正則表達式使用, 以下介绍一些经常使用的正則表達式过滤字符的使用方法。

\ :转义字符,忽略正則表達式中特殊字符的原有含义。
^ :匹配以某个字符串開始的行。
$
:匹配以某个字符串结束的行。

\<:匹配单词的開始。

\>:匹配单词的结束。
[ ]:在[]内某单个字符,如[A]即表示 A 符合要求。

[ - ]:属于[ - ]所标记的范围字符,如[A-Z],即A、B、C一直到Z都符合要求。
. :表示一定有1个随意字符。
* :前面字符能够出现随意次。

?
:前面字符出现0次或1次。
+
:前面字符出现一次或多次。

[ 正则演示样例: ]

1.  ^表示行开头
     grep   '^bbb'   aaa.txt  --color           
     # 从文件aaa.txt中查找以bbb开头的行。

2.  $表示行结尾
     grep   'bbb$'   aaa.txt  --color           
    # 从文件aaa.txt中查找以bbb结尾的行。
3.  .表示单个字符, 它能够匹配除换行符之外的全部字符。

     grep   'bbb...'   aaa.txt  --color         
      # 从文件aaa.txt中查找bbb后面含有三个字符的行, '点'能够匹配空格。

4.  * 表示它前面的那个字符能够出现随意次
     grep   'bbb.*'   aaa.txt  --color         
      # 从文件aaa.txt中查找bbb后面有随意个字符的行。
5.  + 表示它前面的那个字符至少要出现一次
     grep  -E  'bbb.+' aaa.txt --color              # 从文件aaa.txt中查找bbb后面至少会出现一个字符的行。

6.  ?

表示它前面的那个字符能够有也能够没有

     grep -E 'bbbc?' aaa.txt --color               # 从文件aaa.txt中查找存在bbb或bbbc的行。
     注意: grep不支持 + 、? 这两个元字符, 假设想使用, 仅仅能使用扩展的grep  (egrep 或 grep -E)
7.  [ ] 表示匹配一个字符, 出如今[ ]里面的字符都是或的关系
     grep  '^[Bb]bb'  aaa.txt  --color             # 从文件aaa.txt中查找以Bbb或bbb开头的行。

     grep
'[0-9]' aaa.txt --color                     # 从文件aaa.txt中查找含有数字的行
 
   grep -P '\d' aaa.txt --color                     # 从文件aaa.txt中查找含有数字的行, -P表示使用perl的正則表達式
 
   
 
   \d表示数字, \D表示非数字
 
   \s表示空格或tab, \S表示不是空格或tab
 
   \w表示随意字符(大写和小写字母、数字、下划线), \W表示不是字母、数字、下划线。

     注意: ^ 出如今 [ ] 外面的话表示'开头', 假设出如今 [ ] 里面的话表示'否定'
     grep '^[^Bb]..' aaa.txt  --color               # 从文件aaa.txt中查找不是以B或b开头,
并且后面还有两个字符的行。

8.  \< 匹配单词的开头
     grep '\<Tom' aaa.txt --color                  # 从文件aaa.txt中查找单词以Tom开头的行。

9.  \> 匹配单词的结束
     grep '\>Tom' aaa.txt --color                 # 从文件aaa.txt中查找单词以Tom结尾的行。
10.  匹配某个单词, 而不是某个字符串的一部分
     grep '\bTom\b' aaa.txt --color            # 从文件aaa.txt中查找含有单词Tom的行, 假设是aTomb之类的忽略掉。

11.  用\(\)做标签, 后面想引用就用\n (n是一个数字), \1表示第一个被引起来的
     grep '\(tom\)...\1' aaa.txt --color        # 从文件aaa.txt中查找tom, 且它的后面有三个字符, 然后另一个tom的行. 如: tomxxxtom

12.  \{n\} 表示前面的字符要出现n次

     grep 'tomx\{3\}' aaa.txt --color         # 从文件aaa.txt中查找tomx, x要出现3次, 如: tomxxx

     grep 'tomx\{3,\}' aaa.txt --color        # 从文件aaa.txt中查找tomx, x至少要出现三次, 如tomxxx 或 tomxxxx
     grep 'tomx\{3,4\}' aaa.txt --color      # 从文件aaa.txt中查找tomx,
x出现3次或4次, 如tomxxx 或 tomxxxx

linux-shell脚本命令之grep的更多相关文章

  1. linux shell脚本命令

    sort命令 sort #按照字典序排序 sort -n #以数值来排序,避免10比2小的情况 sort -k #如果文件有多列,指定排序的列 sort -r #逆序排列 uniq 命令 sort t ...

  2. linux 基础 shell脚本命令

    #########shell脚本命令#### 1.diff diff file file1 ####比较两个文件的不同 -c ####显示周围的行 -u ####按照一格式统一输出生成补丁 -r ## ...

  3. Linux Shell脚本入门--cut命令

    Linux Shell脚本入门--cut命令 cut cut 命令可以从一个文本文件或者文本流中提取文本列. cut语法 [root@www ~]# cut -d'分隔字符' -f fields &l ...

  4. Linux Shell脚本入门--wget 命令用法详解

    Linux Shell脚本入门--wget 命令用法详解 wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上.它有以下功能 ...

  5. linux shell 脚本攻略学习20--awk命令入门详解

    awk生于1977年,创始人有三个,分别为 Alfred Aho,Peter Weinberger, 和 Brian Kernighan,名称源于三个创始人的姓的首字母. 作用:处理文本文件. awk ...

  6. Linux Shell脚本攻略 读书笔记

    Linux Shell脚本攻略 读书笔记 这是一本小书,总共253页,但内容却很丰富,书中的示例小巧而实用,对我这样总是在shell门前徘徊的人来说真是如获至宝:最有价值的当属文本处理,对这块我单独整 ...

  7. Linux Shell脚本教程

    v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...

  8. Linux Shell脚本攻略

    -Linux Shell脚本攻略 总结的来说,这本书很实践性和实用性强,都是给的具体的例子,直接可以在终端操作实践,比单纯只看不动手务实多了,另外就是,这本书涵盖的内容也比较广,从文本操作到服务器管理 ...

  9. 老李分享:《Linux Shell脚本攻略》 要点(八)

    老李分享:<Linux Shell脚本攻略> 要点(八)   1.打印进程 [root@localhost program_test]# ps -e | head  PID TTY     ...

  10. 老李分享:《Linux Shell脚本攻略》 要点(四)

    老李分享:<Linux Shell脚本攻略> 要点(四)   1.IP地址的正则表达式: [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} 2. ...

随机推荐

  1. 基于WPF系统框架设计(10)-分页控件设计

    背景 最近要求项目组成员开发一个通用的分页组件,要求是这个组件简单易用,通用性,兼容现有框架MVVM模式,可是最后给我提交的成果勉强能够用,却欠少灵活性和框架兼容性. 设计的基本思想 传入数据源,总页 ...

  2. 【2019】问题记录一:后端获取URL参数的值内加号“+”变成空格“ ”

    问题:URL参数中加号“+”变成空格“ ” 一.现象     URL如:http://example.****.com/controller/action?param=rice+cook+panda ...

  3. autolayout先进的自动布局工具箱

    原文链接:http://www.objc.io/issue-3/advanced-auto-layout-toolbox.html 在我的上一个项目中,因为是面向公司内部使用的客户端,所以我直接抛弃了 ...

  4. 如何简单去掉dede后台的验证码 dedecms5.7 验证码怎么去掉

    很多朋友都在找,如何去掉dede后台的验证码,每次登陆都很繁琐.        现在教大家一个dedecms5.7 验证码怎么去掉的最直接的方法: 在dedecms5.7[验证码安全设置]里,说修改后 ...

  5. mysql count(*) 和count(1)区别

    count *更快, 不要加where,否则同count(1)效率相同 sql语句对大小写不敏感,关键字一般大写,其他小写, count(*)不加where,mysql会直接返回总条数,因为mysql ...

  6. 规划设计系列3 | SketchUp+实景三维,方案现状一起看

    将SketchUp中建立的模型与实景三维模型进行集成,既可以充分发挥实景三维在地理空间记录方面的优势,又可以去除SketchUp在周边环境设计上的不足. 同时借助Wish3D Earth丰富的场景浏览 ...

  7. VC++动态链接库(DLL)编程深入浅出(二)

    好,让我们正式进入动态链接库的世界,先来看看最一般的DLL,即非MFC DLL 上节给大家介绍了静态链接库与库的调试与查看,本节主要介绍非MFC DLL. 4.非MFC DLL 4.1一个简单的DLL ...

  8. Mysql 性能监控及调优

    死锁概念: 两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象 1.监控死锁(innotop): (1) 启用 innodb_status_file 在/etc/my.cnf添加如 ...

  9. linux 查找并操作

    find -depth 1 -name 'aa*' | xargs tar -cvf aa.tar 这个命令将为查找当前目录下的所有已aa开头的文件,然后将所有结果"执行打包",打 ...

  10. phpdoctor 安装,配置,生成文档

    window 下安装phpdoctor 1 安装php,设置环境变量path ,把php 的安装路径加上,比如php 安装在d:/php5/ 2下载phpdoctor,可以去官网下载 http://p ...