zoukankan      html  css  js  c++  java
  • grep与正则表达式:

    1、grep程序
     Linux下有文本处理三剑客 -- grep sed awk
     grep:文本 行过滤工具
     sed: 文本 行编辑器(流编辑器)
     awk:报告生成器(做文本输出格式化)
     grep
      包含三个命令:grep egrep fgrep ,它们是用来进行 行模式(pattern)匹配的
      egrep = gerp -E //使用扩展的正则表达式进行匹配
      fgrep = fast grep  //只使用文件通配符进行匹配
      *grep默认使用正则表达式进行文本匹配*
      
     grep的用法:
      grep [option] ... PATTERN [filename]
     grep的常见选项 -- option
      -E  支持使用扩展的正则表达式(ERE)(regexp)
      -P  使用perl语言的正则表达式引擎进行搜索(每一种语言的正则表示式引擎都不相同,甚至sed grep awk使用的regexp引擎也不相同)
      -i   忽略大小
      -v  进行反选
      -o  仅仅输出匹配的内容(默认输出的是匹配到的行)
      --color=auto  语法着色
      -n  显示行号
      -w  匹配固定的单词
      
     PATTERN--正则表达式
      作用:通过一些特殊字符,来表示一类字符内容,然后交给前面的命令来执行;如果使用特殊字符本身含义,就需要 进行转义;
      
      回顾:文件通配符(globbing)
       * ? [ ] [^ ]
      
      1、字符匹配
       .  任意一个字符  ?
       [ ]  范围内的任意一个字符
       [^ ]  范围外任意一个字符
       字符类:[:digit:] [:alnum:] [:alpha:] [:lower:] [:upper:] [:space:] [:punct:]
      2、次数匹配
       * 匹配前面的字符0次到无数次
       ?匹配前面的字符0次到1次
       + 匹配前面的字符1次到n次
       {m} 配置前面的字符m次
        a{7} aaaaaaa
       {m,n} 匹配前面的字符m到n次
       {0,n} 匹配前面的字符0次到n次  【0要不要?】
       {m,} 匹配前面的字符至少m次
      3、位置锚定
       ^ 锚定行首
       $  锚定行尾
        锚定词首和锚定词尾
       >  锚定词尾
       <  锚定词首
        < oot>  rooter
      4、分组
       abc*  abcccc  abc我们要看成一个整体
       ()  示例:(abc)*  abcabcabc  abcccc
       **分组特性:默认情况下,Linux系统会为分组指定变量 ,变量的表示形式 1 2 3 ...
       ((立秋)已过),(香港)依旧不宁。多区出现非法集会,(暴力)示威者破坏公物、堵塞干道,或以激光、砖块袭警、投掷汽油弹,更有甚者公然殴打内地游客及记者。随着示威升级,怂恿“反中乱港”的幕后势力也正慢慢浮现。
       示例:(ab+(xy)*)   其中 1 = ab+(xy)* , 2 = xy
                abbbbbxyxyxyabxy
    练习:
    1、显示/proc/meminfo文件中大小s开头的行
     grep -i "^s" /proc/meminfo
    2、显示/etc/passwd文件中不以/bin/bash结尾的行
     grep -v "/bin/bash$" /etc/passwd
    3、显示/etc/passwd文件中UID号最大的用户的用户名
     sort -n -t: -k3 /etc/passwd | tail -1 | cut -d: -f1
    4、如果用户root存在,显示其默认的shell程序
     grep "^root>" /etc/passwd &> /dev/null && grep "^root>" /etc/passwd | cut -d: -f7
     id root &> /dev/null && grep "^root>" /etc/passwd | cut -d: -f7
    5、找出/etc/passwd中的两位或三位数
     grep "[0-9]{2,3}"  /etc/passwd
      -w   //匹配固定单词
      <[0-9]{2,3}>
      [0-9]{2,3}
    6、显示/etc/rc.d/rc.sysinit文件中,至少以一个空白字符开头的且后面为非空白字符的行
     grep "^[[:space:]]+.*[^[:space:]]$" /etc/rc.d/rc.sysinit
    7、找出”netstat -tan”命令的结果中,以“LISTEN”后跟0、1或多个空白字符结尾的行
     netstat -tan | grep "LISTEN[[:space:]]*$"
    8、添加用户bash、testbash、basher以及nologin(其shell为/sbin/nologin):而后找出/etc/passwd文件中用户名同shell名的行
     useradd bash           /bin/bash
     useradd testbash
     useradd basher
     useradd -s /sbin/nologin nologin
     grep "(^[[:alnum:]]+>).*1$" /etc/passwd
    9、IP地址如何匹配?
     ip地址:
      0-255.0-255.0-255.0-255
      0-255
      2 0-4 0-9  2[0-4][0-9]
      2 5 0-5 25[0-5]
      1 0-9 0-9  1[0-9][0-9]
      0 0-9 0-9  [0-9][0-9]
      0 0    0-9  [0-9]
     
     2[0-4][0-9]|25[0-5]|1[0-9][0-9]|[0-9][0-9]|[0-9].2[0-4][0-9]|25[0-5]|1[0-9][0-9]|[0-9][0-9]|[0-9].2[0-4][0-9]|25[0-5]|1[0-9][0-9]|[0-9][0-9]|[0-9].2[0-4][0-9]|25[0-5]|1[0-9][0-9]|[0-9][0-9]|[0-9]
     ((2[0-4][0-9])|(25[0-5])|(1[0-9][0-9])|([0-9][0-9])|([0-9])).1.1.1

    <[1-9]|[1-9][0-9]|1[0-9]{2}|2[01][0-9]|22[0-3]>
    1-9
    1-9 0-9
    1 0-9 {2}
    2 [01] 0-9  200 - 219
    2 2 0-3   220 - 223
    (.<[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4]>){2}
    0-9
    1-9 0-9
    1 0-9 0-9
    2 0-4 0-9
    2 5 0-4
    ( ){2}
    .<[1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4]>
    1-9
    1-9 0-9
    1 0-9 0-9
    2 0-4 0-9
    2 5 0-4
  • 相关阅读:
    超棒的前端开发界面套件 InK
    现代浏览器的web音频javascript类库 Howler.js
    富有创意的菱形响应式页面设计
    创意味儿十足的web布局及交互设计
    一个超酷的横向多列响应式布局效果
    帮助你生成响应式布局的CSS模板 xyCSS
    免费素材大荟萃:免费图标和UI设计
    使用浏览器生成超棒的midi音乐 midi.js
    JavaScript 和 .NET 中的 JavaScript Object Notation (JSON) 简介
    推荐一批基于web的开源html文本编辑器(40+)
  • 原文地址:https://www.cnblogs.com/dongxu2019/p/11360449.html
Copyright © 2011-2022 走看看