grep詳解及相關面試題和答案

    相信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允許使用國際字符模式匹配或匹配模式的類名形式。

wKioL1ZC8ivA9NhjAABqAvjSO-s175.png

以下是關於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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章