相信g r e p是U N I X和L I N U X中使用最广泛的命令之一。 g r e p(全局正则表达式版本)允许对文本文件进行模式查找。如果找到匹配模式, g r e p打印包含模式的所有行。g r e p支持基本正则表达式,也支持其扩展集。


常用的g r e p选项有:

-c 只输出匹配行的计数。

-i 不区分大小写(只适用于单字符)。

-h 查询多文件时不显示文件名。

-l 查询多文件时只输出包含匹配字符的文件名。

-n 显示匹配行及行号。

-s 不显示不存在或无匹配文本的错误信息。

-v 显示不包含匹配文本的所有行。


pattern正则表达式主要参数:
\: 忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行。
$: 匹配正则表达式的结束行。
\<:从匹配正则表达 式的行开始。
\>:到匹配正则表达式的行结束。
[ ]:单个字符,如[A]即A符合要求 。
[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
。:所有的单个字符。
* :有字符,长度可以为0。


g r e p允许使用国际字符模式匹配或匹配模式的类名形式。

以下是关于grep的几个面试题,希望能帮到大家

1、显示/proc/meminfo文件中以不区分大小的s开头的行;

grep -i s /proc/meminfo

cat /proc/meminfo|grep –i ^s

2、显示/etc/passwd中以nologin结尾的行;
   grep nologin$ /etc/passwd

sed -n '/nologin$/p' /etc/passwd|wc -l
3、显示/etc/inittab中以#开头,且后面跟一个或多个空白字符,而后又跟了任意字符的行;
   grep ^#.* /etc/inittab
4、显示/etc/inittab中包含了:一个数字:(即两个冒号中间一个数字)的行;
  grep :[0-9]: /etc/inittab 

grep :[[:digit:]]: /etc/inittab
5、显示/boot/grub/grub.conf文件中以一个或多个空白字符开头的行;
    grep^[[:space:]]\{1,\}.*" /boot/grub/grub.conf
    grep  -E --color"^[[:space:]]{1,}.*" /boot/grub/grub.conf 
6、显示/etc/inittab文件中以一个数字开头并以一个与开头数字相同的数字结尾的行;
   grep "^[09].*\1$" /etc/inittab
7ifconfig命令可以显示当前主机的IP地址相关的信息等,要求不包括127.0.0.1
   ifcofig eth0| grep "inetaddr" | cut -d -f2 | cut -d " " f1(注意“中的空格)

ifconfig eth0|grep "inet addr"|awk '{print $2}'|awk -F ':''{print $2}'
8、显示/etc/sysconfig/network-scripts/ifcfg-eth0文件中的包含了类似IP地址点分十进制数字格式的行;
  grep -E "([0-9]{1,3}\.){3}\.[0-9]{1,3}"/etc/sysconfig/network-scripts/ifcfg-eth0
  grep"[0-9]\{1,3\}\."\{3\}\.[0-9]\{1,3\}/etc/sysconfig/network-scripts/ifcfg-eth0