天天看點

面試官都在問 | Linux指令 - grep

面試官都在問 | Linux指令-​

​grep​

在我們面試各大公司的時候,關于Linux往往最容易問到的問題之一就是Linux指令,而其中,能夠使用指令進行快速的文本過濾,查找文本中的目标内容,已經是一個高頻且基本的能力了,一般,面試官往往通過對于該指令的考察,擷取應聘者對Linux環境是否熟悉。我們結合海量面經,提取出最容易被問到的Linux當中grep指令的常見指令行參數,供大家參考。

  • grep的核心作用
  • grep常見過濾方式及選項

grep是什麼

grep是一個文本過濾器,作用是在檔案中查找符合我們要求的内容。

文法格式

第一種形式,從指定的檔案中找出比對pattern的行: ​

​grep [option] pattern [file1,file2,...]​

第二種形式,從管道中找出比對pattern的行:​

​cmd | grep [option] pattern​

說明:pattern是由正規表達式字元及文本字元所編寫的過濾條件。

常用選項

選項 含義
-v 不顯示比對行資訊
-i 搜尋時忽略大小寫
-n 顯示行号
-r 遞歸搜尋
-E 支援擴充正規表達式
-F 不按正規表達式比對,按字元串字面意思比對
-c 隻輸出比對行的數量,不顯示具體内容
-o 隻顯示模式比對到的字元串

執行個體:

我們的測試檔案test.txt内容如下:

I love linux
i love LINUX
i Love Linux
I LOVE LINUX
i love Linu.*      

-v 選項,反向比對:

[root@localhost ~]# grep -v love test.txt      

-i 選項,忽略大小寫:

[root@localhost ~]# grep -i love test.txt      

-n 選項,顯示比對行的行号:

[root@localhost ~]# grep -n love test.txt      

-E 支援擴充正則,​

​|​

​是擴充正則中的特殊含義的符号,代表任意一個比對(不是管道哦):

[root@localhost ~]#  grep -E 'linux|LINUX' test.txt      

-F 不要按正則來解析,就要字元串本身:

[root@localhost ~]#  grep -F "Linu.*" test.txt      

-c 隻顯示比對的行數:

[root@localhost ~]# cat /etc/passwd | grep -c "root" # 查找passwd檔案中有多少行有root      

實戰

檢視最近有哪些遠端IP以root身份登陸過我們的機器,統計每個IP登陸的次數。我們的思路如下:

1.通過last列出最近登陸系統的所有使用者。

2.過濾出以root登陸系統的IP。

3.過濾出遠端登陸的IP。

4.統計出每個IP登陸的次數。

last | grep "^root" | grep -E -o "([[:digit:]]{1,3}.){3}[[:digit:]]{1,3}" | sort | uniq      

總結

grep主要功能是文本過濾,往往需要和管道還有正規表達式搭配使用才能發揮威力。

[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-EoRncsbw-1602670793953)(image/grep.png)]

繼續閱讀