面試官都在問 | Linux指令- grep
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)]