命令grep簡介
利用該命令在文本中查找指定的字符串,是Linux中最常用的文本處理工具之一。
命令grep與正則表達式結合使用時,功能會非常強大。
命令grep會在文本文件中按照指定的正則表達式進行全局搜索,並將搜索出的行打印出來。
常用選項
1. -i,忽略大小寫
2. -n,顯示結果所在行號
3. -c,統計匹配到的行數(注,不是匹配到的次數)
4. -o,只顯示符合條件的字符串,而不是整行
5. -v,反選,顯示出不符合的行
6. -w,匹配的是整個單詞
7. -Ax,結果所在行之后的指定行數,x為行數
8. -Bx,結果所在行之前的指定行數,x為行數
9. -Cx,結果所在行之前和之后的指定行數,x為行數
10. -e,實現多個選項的匹配,邏輯or關系
11. -q,靜默模式,不輸出任何信息
eg. 當只關心是否匹配到的時候,使用此命令,然后,使用“echo $?”查看是否匹配成功,當返回0,表示成功,當返回1,表示失敗
實例講解
1. 為了方便實驗,存在兩個用來測試的文本文件test.txt和test1.txt,內容如下所示
2. 若在文本test.txt中,區分大小寫地查找帶有字符串“grep”的行,則有
注意,默認情況下,grep是區分大小寫的
3. 若在文本test.txt中,不區分大小寫地查找帶有字符串“grep”的行,使用選項“-i”,則有
4. 若在文本test.txt中,在區分大小寫的同時,帶行號的查找帶有字符串“grep”的行,使用選項“-n”,則有
5. 若在文本test.txt中,統計出現字符串“grep”的行數,使用選項“-c”,則有
注意,所顯示的內容中,並不包含對應的行內容,僅包含行數
6. 若在文本test.txt中,不區分大小寫地顯示所符合的字符串“abc”,使用選項“-i”和“-o”,則有
注意,並不能去重!!!
7. 若在文本test.txt中,顯示出不含有字符串“grep”的行,使用選項“-v”,則有
8. 若在文本test.txt中,顯示帶有單詞“grep”,而不是包含字符串“grep”的行,使用選項“-w”,則有
9. 若在文本test1.txt中,找出年齡為18歲的同學的姓名,則使用選項“-Bx”,則有
若要顯示名為“李四”的年齡和性別,則有
若要顯示性別為“男”的同學的姓名、年齡、職業和籍貫,則有
10. 若在文本test.txt中,顯示出帶有字符串“grep”或“abc”的行,使用選項“-e”,則有
或使用“egrep”也可以
11. 若在文本test.txt中,僅僅查看是否存在字符串“grep”,而不用顯示對應的行,則有
注意,選項“-q”是靜默模式的,若想查看是否查詢成功,則可以顯示出“$?”的值。當“$?”為0時,表示查詢成功,當“$?”為1時,表示查詢失敗!