相信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
7、ifconfig命令可以顯示當前主機的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