Linux-grep学习笔记

来源:互联网 发布:win10网络授权 编辑:程序博客网 时间:2024/06/04 19:22

Linux Grep

grep简介

  • grep是Linux下一个文本搜索工具,全名Globe serach a Regular Expression and Print。
  • grep通过正则表达式搜索匹配内容。
  • 命令格式:
    1.grep [option] 'pattern' file
    2.command|grep [option] 'pattern'

===============================

option

  • -i:ignore-case,对匹配内容不区分大小写
  • -o:only-matching,只输出匹配到的内容
  • -v:invert-match,不匹配模式的内容
  • -R:recursive,递归搜索,当搜索目录时,将会搜索指定目录以及目录下的所有子目录
  • -l:list,files-with-matches,显示内容与模式匹配的文件
  • -n:line-number,输出时显示行号
  • -c:count,输出匹配内容的行数,不输出匹配内容

===============================

表达符号

  • ^:锚定开头,标记此点是一行记录的开头位置

    例:echo "aassddff"|grep -o '*^'
    输出结果将为空,因为一行记录的开头前不可能有任何内容

  • $:锚定结尾

  • *:匹配前一字符0此或多次
  • .:匹配任意一个非换行符的字符
  • []:匹配范围内某一字符

    例:echo "aabbccdd"|grep -o '[ab]'
    输出:
    a
    a
    b
    b

  • [^]:不匹配范围内所有字符

  • (pattern):将pattern分组,用来引用,引用第一个分组\1,第二个\2…

    例1:
    echo "ab44 d44a d" |grep -o '\([0-9][0-9]\) d\1'
    44 d44

    例2:
    echo "ab44 d33a d" |grep -o '\([0-9][0-9]\) d\1'

    引用可认为用此前分组匹配的内容替换引用标识,例1和例2中的\1都代表44,所以例1有输出而例2无输出

  • {n,m}:匹配前一字符或分组至少n到m次,n可为0,m可选

    注:{n,}表示n到任意次数,{n}表示匹配正好n次

  • \<:锚定单词的开头
  • >:锚定单词的结尾
  • \w:匹配任意一个字母或数字,相当于[A-Za-z0-9]
  • \W:与\w相反,匹配任意非字母或数字,相当于[^A-Za-z0-9]

===================================

grep里的与、或

  • 与:grep ‘pattern1’|grep ‘pattern2’,其实就是在匹配pattern1的结果集上继续进行pattern2的匹配
  • 或:grep ‘pattern1|pattern2’

学习文档、内容参考:
http://baike.baidu.com/link?url=P4CPXqpX6RAPZN3e5HZC3_Xt6ZZY6qj_jkqGBe4RWotvvu4SQmPosuq35tdzd8g0tDqbCjbWh5QT6TEs9Y4jBq

0 0