dsfggg 发表于 2015-8-6 10:50:44

grep 正则表达式

grep ‘root’ /etc/passwd

    -i忽略字母大小写
    --colour 加颜色 grep --colour ‘root’ /etc/passwd
    -v 匹配到的行不显示,没有匹配到的显示
    -o 只显示被匹配到的串,每个串显示为一行
    -E 使用扩展正则表达式
    -A #:显示其后#行
    -B # 显示其前#行
    -C # 显示其前后各#行
*:任意长度的任意字符
?: 任意单个字符
[]:
[^]:
a*b:匹配前面的a任意次
.*: 任意长度的任意字符
?: 匹配其前面的字符1次或0次(一般配合\?使用 )
\{m,n\}:匹配其前面的字符至少m次,至多n次

位置锚定:
    ^:此字符后面的任意字符必须出现在行首
          grep ‘^root’ /etc/passwd

    $:锚定行尾
   grep ‘b..h$’/etc/passed匹配在passwd中以b开头,以h结尾的 ,中间有任意两个字符的行
    ^$:空白行
引用的时候用【】括起来
[:digit:]数字
[:lower:]小写字母
[:upper:]大写字母
[:punct:]标点符号
[:space:]空白字符
[:alpha:]所有字母
[:alnum:]所有数字和字母


\<:其后面的任意字符必须作为单词首部出现等同于\b
\>:其前面的任意字符必须作为单词的尾部出现   等同于\b
    例\<root\> 查找文本中root这个单词

\(\) :分组多用于后项引用 用一个字符代替它
   \(ab\)*ab可以出现一次零次或任意次   
   \1:引用第一个左括号以及与之对应的右括号所包含的所有内容

            例:grep ‘\(l..e\).*\1’

扩展正则表达式:必须使用egrep或者grep -E
   字符匹配:
       同上
   次数匹配
      *:
      ?:
      +:其前字符至少一次
      {m,n}:
    分组:
       ():分组 不需要写斜线
    或者:
      | :or   

例:找出/boot/grub/grub.conf 1-255之间的整数
   grep --colour -E '\<(||1|2|25)\>' /boot/grub/grub.comf

找IP地址:
\<||1{2}|2|22\>(\.\<(|||1|2)\>)\>){2}\.\<(||1|2|25\>


页: [1]
查看完整版本: grep 正则表达式