码迷,mamicode.com
首页 > 其他好文 > 详细

grep命令及基本正则表达式

时间:2014-11-15 21:28:51      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   color   ar   os   使用   sp   

grep命令及基本正则表达式
 
    grep
 
       NAME:名称   
          grep:Global search REgular expression and Print out the line
          文本搜索工具,根据用户指定的"模式(pattern)"对目标文本进行过滤,显示被模式匹配到的行。
       
       SYNOPSIS:摘要,命令使用摘要
          grep [OPTION] ...‘PATTERN’ FILE...             
              --color 将匹配到的内容加颜色高亮显示
               例:
                              bubuko.com,布布扣
                        注:--color=auto:自动加颜色高亮显示
                               输出结果含‘user’都加颜色高亮显示
                               为了以后的方便可以用alias命令别名
                               输入alias grep=‘grep --color=auto‘
              正则表达式:由一类字符书写的模式,其中有些字符不表示字符的字面意义,而是表示控制或通配的功能。
                        例:在windows中*代表任意长度,任意的字符。
                              元字符:字符不表示字符的字面意义,而是表示控制或通配的功能就叫做元字符。
                        例:*就是一个元字符
              正则表达式分两类:基本正则表达式和扩展正则表达式。
                        基本正则表达式:
                        字符匹配:
                            .    :匹配任意单个字符
               例:
                                      bubuko.com,布布扣
                注:所有以r开头以t结尾的字符都高亮
                   []  :匹配指定集合中的任意单个字符
                例:grep ‘r[a-z][a-z]t‘ /etc/passwd
                                     bubuko.com,布布扣
                注:所有以r开头以t结尾,中间是小写字母的字符都高亮
                             [[:digit:]] = [0-9]    所有数字
    [[:lower:]] = [a-z]    所有小写字母
    [[:upper:]] = [A-Z]    所有大写字母
    [[:alpha:]] = [a-zA-Z] 所有字母
    [[:alnum:]] = [0-9a-zA-Z] 所有字母和数字
    [[:space:]]            所有的换行符,空格符,制表符
    [[:punct:]]            所有的标点符号
上例也可以这样输入命令  
     grep ‘r[[:alpha:]][[:alpha:]]t‘ /etc/passwd 也是一样的结果
                                      bubuko.com,布布扣 
                           [^]  :匹配指定集合外的任意单个字符(和[]相反)
                       次数匹配:用于对其前面紧邻的字符所能够出现的次数作出限定。
                            *      :匹配其前面任意次,0,1或多次;
           例:我们先创建个文件a.txt里面有xy sy aby abc字符的文件 
                                          bubuko.com,布布扣
           注:如上,匹配y其前面n个字符的行,就是显示以y结尾的所有行。那么问题来了,如果我们需要匹配指定次数的呢?
                             \?    :匹配其前面出现的字符0次或1次
           匹配其前面出现的字符只能出现一次,或者不出现
            例:grep ‘x\?y‘ a.txt 
                  bubuko.com,布布扣
      注:匹配y其前面的x只能出现一次,或者不出现
                            \+      匹配其前面的字符出现至少一次;
                                  例:
                                          bubuko.com,布布扣
                                   注:匹配x字符至少要出现一次。   
   \{m\}  :匹配其前面的字符至少m次;
   例:grep ‘x\{3\}y‘ !$
                                         bubuko.com,布布扣
                                  注:显示x至少出现3次,!$的意思是最近命令的参数
                          \{m,n\}:匹配其前面的字符至少m次,至多n次;
                                  例: grep ‘x\{2,5\}y‘ a.txt
                                        bubuko.com,布布扣
                                 注:显示x至少出现2次,至多5次。是m-n次
                            .*      :匹配任意长度的任意字符
                                例:grep ‘r.*t‘ /etc/passwd
                                       bubuko.com,布布扣                           
                                注:.是任意单个字符,*是任意字符次数 2个加起来就是任意字符任意次数
                       位置锚定:也就是位置锁定,指定其出现在什么位置上面
                           ^   :行首锚定,必须出现在最左侧
                                例:grep ‘^r[[:alpha:]][[:alpha:]]t‘ /etc/passwd
                                      bubuko.com,布布扣
                                注:[[:alpha:]]代表所有的字母,显示r为行首,中间2个所有字母的字符,t为尾部
                           $   :行尾锚定,必须出现在最右侧
                                例:grep ‘.*sh$‘ /etc/passwd
                                       bubuko.com,布布扣
                                注:显示sh结尾的所有行
                           ^$    空白行:行首与到行尾。
                            \<:词首锚定,
                                出现在要查找的单词模式的左侧:\<char
                                例:grep ‘\<r..t‘ /etc/passwd
                                      bubuko.com,布布扣                            
                                注:匹配r是这个单词的词首,t是这个单词的词尾,..表示任意符号单个字符^表示行首。
                            \>:词尾锚定,也可以用\b
                                出现在要查找的单词模式的右侧:char\>
                                例:grep ‘bash\>‘ /etc/passwd
                                      bubuko.com,布布扣
                                 注:显示passwd文件中,所有单词bash在右侧的文件。
                           \<pattern\>:匹配单词    pattern类似于单词
                                 例:grep ‘\<user\>‘ /etc/passwd
                                    bubuko.com,布布扣
                                 注:上例显示\<\>中间字符的所有的行。
                           \<pattern\> 是\<词首锚定和\>词尾锚定,中间加个单词的组合。这代表一个单词
                       分组:\(\)   在bash中{}(花括号),()小括号也有特殊意思,所以在这里需要用\做转意符
                                 \{m,n\}  是次数锚定的  最少为m次,最多n次
                              例:abababx.txt文件中有下列字符
                                     bubuko.com,布布扣
                                  输入命令:grep ‘\(ab\)\{1,3\}‘ abababx.txt 
                                    bubuko.com,布布扣
                                注:此显示ab循环  \(ab\)为最少一次最多3次\{1,3\}的行
                       后向引用:模式中,如果使用\(\)实现了分组,在某行文本的检查中,如果括号中的模式匹配到了某内容,次内容后面的模式中可以被引用;
                                 \1,\2,\3   第一个括号,第二个括号,第三个括号
                                 模式自左而右,引用第#个左括号以及与其匹配右括号之间的模式匹配到的内容。
                               例:grep ‘\(a.b\).*\1‘ abababx.txt
                                     bubuko.com,布布扣
                                注:(a.b):是a开头中间跟任意字符,b结尾
                                          .*  :任意字符任意长度
                                          显示含(a.b),中间可以是.*,但后面还含有(a,b)的所有行
              grep选项:
                    -v:反向选取;总体反向选取。
                             例:abababx.txt有下列文件,输入命令grep -v ‘123‘ abababx.txt后。查看abababx.txt文件中不包含123的行,空白行也算。
                                   bubuko.com,布布扣
                    -o:仅显示匹配到的内容
                            例:grep -o ‘123‘ abababx.txt
                                 bubuko.com,布布扣
                                注:显示查找到的123,并且就显示123
                    -i:忽略字符大小写
                    -E:使用扩展正则表达式
                    -A #:显示查找的到文件并显示下面#行
                             例:grep -A 3 ‘root‘ /etc/passwd
                                    bubuko.com,布布扣                                   
                              注:查找含root的的行并显示其下面3行,查找到第二个用--隔开并继续显示下面3行
                            -B #:显示上面#行    
                            -C #:显示上下#行
 
 





grep命令及基本正则表达式

标签:style   blog   http   io   color   ar   os   使用   sp   

原文地址:http://www.cnblogs.com/qq354381577/p/4100165.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!