linux中grep的应用

grep应用正则表达式

1、基本用法

[root@www ~]# grep [-acinv] [--color=auto] '搜寻字符串' filename
选项与参数:
-a :将 binary 文件以 text 文件的方式搜寻数据
-c :计算找到 '搜寻字符串' 的次数
-i :忽略大小写的不一样,因此大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!
-o :只显示匹配到的串 --color=auto :能够将找到的关键词部分加上颜色的显示
-E : 使用扩展正则表达式
-A number : 匹配到当前行并显示后number行
-B number :
匹配到当前行并显示前number行
-C number : 匹配到当前行并显示先后number行

2、普通正则表达式之字符

一、元字符
spa

     . :匹配任意单个字符code

     []:匹配指定范围内的任意单个字符blog

     [^]:匹配指定范围外的任意单个字符ip

二、字符集合ci

3、普通正则表达式之匹配次数(贪婪模式:能匹配多少就匹配多少)

*:匹配其前面的字符任意次字符串

  .*:任意长度的任意字符class

\?:匹配其前面字符的1次或0次bfc

\{m,n\}:匹配其前面的字符至少m次,至多n次扩展

      \{1,\} :最少一次,多了不限

      \{0,3\}

4、普通正则表达式之位置锚定:

^:锚定行首,此字符后面的任意内容必须出如今行首

$: 锚定行尾,次字符前面的任意内容必须出如今行尾

^$:空白符

\<:锚定行首,其后面的任意字符必须做为单词首部出现

\>:锚定行尾,其后面的任意字符必须做为单词尾部出现

例子:\<root 在行首的单词 若是是aroot是不行的

        \<root\> 只有彻底匹配root行才会显示

5、普通正则表达式之分组 \(\)

\(ab\)* :

            把ab当成一个组实现0次1次或屡次。

 \(\)的后项引用:

\1:引用第一个左括号以及与之对应的右括号所包含的全部内容

\2,\3分别表示引用第二个左括号

例子:grep '\(l..e\).*\1' 

显示:He love his lover

6、扩展正则表达式(不须要写\)

注:能够用grep -E 也可用egrep

字符匹配:

     和普通相同:. 和[],[^]

次数匹配:

         和普通相同:*,?,{m,n}(只是在扩展中不用\)

         和普通不一样:+:匹配其前面字符至少1次,至关于{1,}

位置锚定

  和普通相同:^,$,\<,\>

分组:

():真正的分组

引用:\1,\2,\3

特殊字符:

| :表示或者的意思

C | cat:表示cat和C.是总体进行或。

 匹配ip地址:

   IPV4:

  5类: A B C D E

A: 1-127

B: 128-191

C: 192-223

      简单版:

 \<[1-9] | [1-9] [1-9] | 1[0-9] {2} | 2[01] [0-9] | 22[0-3]\>(\.\<[1-9] | [1-9] [1-9] | 1[0-9] {2} | 2[01] [0-9] | 25[0-4]\>){2}\.\<[1-9] | [1-9] [1-9] | 1[0-9] {2} | 2[01] [0-9] | 25[0-4]\>

    可匹配到223.254.254.254

     复杂版:

      ((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))))

    可匹配到255.255.255.254

注:正则表达式是贪婪模式,若是须要切换为非贪婪模式,可使用?来切换。

相关文章
相关标签/搜索