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

grep使用集合

时间:2018-08-04 20:37:22      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:动作   str   字符集   bash   找不到   span   ipaddr   match   16px   

一、grep使用

(一)、选项

-a 不要忽略二进制数据。
-A<显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容。
-b 在显示符合范本样式的那一行之外,并显示该行之前的内容。
-c 计算符合范本样式的列数。
-C<显示列数>或-<显示列数>  除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
-d<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。
-e<范本样式> 指定字符串作为查找文件内容的范本样式。
-E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。
-f<范本文件> 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。
-F 将范本样式视为固定字符串的列表。
-G 将范本样式视为普通的表示法来使用。
-h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
-H 在显示符合范本样式的那一列之前,标示该列的文件名称。
-i 忽略字符大小写的差别。
-l 列出文件内容符合指定的范本样式的文件名称。
-L 列出文件内容不符合指定的范本样式的文件名称。
-n 在显示符合范本样式的那一列之前,标示出该列的编号。
-q 不显示任何信息。
-R/-r 此参数的效果和指定“-d recurse”参数相同。
-s 不显示错误信息。
-v 反转查找。
-w 只显示全字符合的列。
-x 只显示全列符合的列。
-y 此参数效果跟“-i”相同。
-o 只输出文件中匹配到的部分。

(二)、元字符

grep        //使用基本元字符集
^    $    .    *    [ ]    [^]    \< \>    \( \)    \{ \}     \+     \|
egrep(或grep -E):                    //使用扩展基本元字符集
?        +        {    }        |        (    )
//注:grep也可以使用扩展集中的元字符,仅需要对这些元字符前置一个反斜线
\w                            //所有字母与数字,称为字符[a-zA-Z0-9]    ‘l[a-zA-Z0-9]*ve‘        ‘l\w*ve‘

\W                            //所有字母与数字之外的字符,称为非字符      ‘love[^a-zA-Z0-9]+‘    ‘love\W+

\b                              //词边界            ‘\<love\>‘            ‘\blove\b

 

(三)、命令格式

grep [选项] PATTERN filename filename....

#grep Tom /etc/passwd
#grep bash shell  /etc/test

//找到:            grep返回的退出状态为0
//没找到:            grep返回的退出状态为1
//找不到指定的文件:            grep返回的退出状态为2

管道格式

  grep 程序的输入可以来自标准输入或者管道,而不仅仅是文件,例如:

#grep tom

#ps aux | grep sshd

#ll | grep ^d

#grep alice /etc/passwd /etc/shadow /etc/group

二、示例

grep -E 或 egrep

# egrep NW datafile

# egrep NW d*

# egrep 4$ datafile

# egrep TB Savege datafile

# egrep 5\.. datafile

# egrep ^[we] datafile

# egrep [^0-9] datafile

# egrep [A-Z][A-Z] [A-Z] datafile

# egrep ss*  datafile        

# egrep [a-z]{9} datafile

# egrep \<north datafile

# egrep \<north\> datafile    

# egrep \<[a-r].*n\> datafile

# egrep ^n\w*\W datafile    

# egrep \bnorth\b datafile

# egrep NW|EA datafile

# egrep 3+ datafile

# egrep 2\.?[0-9] datafile    

# egrep (no)+ datafile

# egrep S(h|u) datafile

# egrep Sh|u datafile

 

三、实战

# egrep ifcfg /etc/*                    //文件
# egrep -R ‘ifcfg‘ /etc                   //目录

# egrep ‘root‘ /etc/passwd /etc/shadow /etc/hosts
/etc/passwd:root:x:0:0:root:/root:/bin/bash
/etc/passwd:operator:x:11:0:operator:/root:/sbin/nologin
/etc/shadow:root:$6$6vCMgBDL$g9KSR3cVWhzpqbwQs69haw/n4VFtVo2qYn8J0Gjy8wWBVmJjXfGS6DqVl/DNH.nH.xASCJexS4N2KVhIFWoMU.:17644:0:99999:7:::

# egrep -l ‘root‘ /etc/passwd /etc/shadow /etc/hosts
/etc/passwd
/etc/shadow

# egrep -n ‘root‘ /etc/passwd /etc/shadow /etc/hosts
/etc/passwd:1:root:x:0:0:root:/root:/bin/bash
/etc/passwd:10:operator:x:11:0:operator:/root:/sbin/nologin
/etc/shadow:1:root:$6$6vCMgBDL$g9KSR3cVWhzpqbwQs69haw/n4VFtVo2qYn8J0Gjy8wWBVmJjXfGS6DqVl/DNH.nH.xASCJexS4N2KVhIFWoMU.:17644:0:99999:7:::

# egrep ‘^IPADDR‘ /etc/sysconfig/network-scripts/ifcfg-br0 
IPADDR="10.18.43.100"

# egrep ‘^IPADDR‘ /etc/sysconfig/network-scripts/ifcfg-br0 |egrep -o ‘[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}‘
10.18.43.100

# egrep ‘^IPADDR‘ /etc/sysconfig/network-scripts/ifcfg-br0 |egrep -o ‘([0-9]{1,3}\.){3}[0-9]{1,3}‘
10.18.43.100


# grep --help |grep ‘\-R‘
  -R, --dereference-recursive

# grep --help |egrep -A5 ‘\-R‘
  -R, --dereference-recursive
                            likewise, but follow all symlinks
      --include=FILE_PATTERN
                            search only files that match FILE_PATTERN
      --exclude=FILE_PATTERN
                            skip files and directories matching FILE_PATTERN




grep使用集合

标签:动作   str   字符集   bash   找不到   span   ipaddr   match   16px   

原文地址:https://www.cnblogs.com/sky-k/p/9419551.html

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