grep 顯示包含兩個關鍵字_linux三劍客之-grep

e5c3d0ece6e4f3ea4fb4f6f096eeae5d.png

一、grep簡介

1.介紹

全局查找正則表達式并且打印結果行的命令。

2.輸入

一個文件或者一個標準輸入(stdin),或者是一個“-”連字符()。

3.輸出

打印在屏幕上

4.grep家族擴展命令

egrep、fgrep

二、 Grep命令的應用

1.命令格式

grep [選項] 模式 [文件…]

例如:grep root /etc/passwd

(1) grep在文件/etc/passwd中查找模式root

(2) 如果查找成功,文件中相應的行會顯示在屏幕上;如果沒有找到指定的模式,就不會有任何輸出。

(3) 如果指定的文件不是一個合法文件,屏幕上會顯示報錯信息。

(4) 如果發現了要查找的模式,grep就返回退出狀態0,表示成功;如果沒找到,返回的退出狀態為1;找不到指定文件時,退出狀態將是2。

(5) grep的程序輸入可以來自標準輸入或管道、文件。

(6) 如果忘了指定文件,grep會以為你要從標準輸入獲取輸入,于是停下來等你鍵入一些字符。

(7) 如果輸入來自管道,就會有另一條命令的輸入通過管道變成grep命令的輸入。

例如:ps -ef | grep root

ps命令的輸出被送到grep,然后所有包含root的行都被打印到屏幕上。

2.原理

grep命令在一個或多個文件中查找某個字符串的模式。

3.注意

(1) 如果模式中包含空格,就必須用引號括起來。

(2) 模式可以是一個被括號括起來的字符串,也可以是單個詞。

(3) 位于模式之后所有的單詞都被視為文件名。

(4) grep不會對輸入文件進行任何修改和變化。

三、正則表達式元字符

grep支持很多正則表達式元字符,以便用戶更精確的定義要查找的模式。

f02ef741bec6e3166bc8c439baddf90b.png

四、grep選項

30816d4bdb7001604805f57a253c8f51.png

五、grep使用正則表達式示例

1. grep root /etc/passwd

f8301c7395137a2ec2b54cabab734f4a.png

2. grep ^root /etc/passwd

2a207d5f6c547ae3f2a0f48f0e156179.png

3. grep login$ /etc/passwd

bf15ecf3886ed4c09db462b465e11377.png

4. grep 'bind Da' /etc/passwd

f08765c79f863112d668cf7ffa464be8.png

因為bind和Da中間有空格所以加了單引號,否則只會匹配bind

5. grep '5..' test.txt

a06efff378384b662102aecf30beaa49.png

打印所有包含5,后面跟一個.號,再跟一個任意字符的行。.代表單個字符,被轉義后,只代表本身一個.號

6. grep '^[rt]' /etc/passwd

f3d070111541db0d8b85de21c25163ab.png

7. grep '[^0-9]' test.txt

fd834bdfc27e9557ec3f4e694d18c591.png

8. grep '[A-Z][A-Z][A-Z]' test.txt

1bcd142bf83ea38299c210be55c9fda8.png

9. grep "root*" /etc/passwd

9f0dcb7345da1294d66f9d72eb9b5e08.png

10. grep '[a-z]{9}' /etc/passwd

3869a5e6541ef98a5179c28b26fda16c.png

11. grep '' test.txt

09da3c84ffb7514ea48aeb9b734de1fe.png

12. grep '' /etc/passwd

c0db14e428f95bc20713967579e441c8.png

打印所有包含以小寫字母開頭,以n結尾,中間由任意多個字符組成的單詞的行,注意:符號.*代表任意字符,包括空格

六、 grep選項示例

1. grep -n 'north' test.txt

eb503b7240a344e40d04659298c3136c.png

2. grep -i 'pid' test.txt

6ba0361f21fb1f20b241f67baf772798.png

3. grep -v 'root' /etc/passwd

858cd33755f9e9cc9331cd15e86a520a.png

4. grep -l 'root*' /etc/passwd ~/test.txt

92cdcd25be8fc46433a9c0af3444cf35.png

使用-l使grep只輸出包含模式的文件名,而不輸出文本行

5. grep -c 'root' /etc/passwd

4f03a9266f2a308483a08c24d3849bba.png

打印含有模式的行的數目

6. grep -w 'north' test.txt

85cbfc2a990a4f03d94056356c7e7144.png

查找作為一個詞,而不是詞的一部分出現的模式

七、 grep與管道

1. ls | grep 'test'

7cf5a0f3bcc74990174ed640e71f70d5.png

2. ls | grep ^te

6b8115770ecefb5d182d99c5afa34245.png

ls命令輸出通過管道傳給grep

八、 egrep擴展

egrep在grep的基礎上增加了更多的元字符。但是egrep不允許使用{},{}

1. egrep使用的正則表達式元字符

0aa4e8c4e5863dba1bd4aacae8e384ee.png

2. 示例

ad5b07afbe894ba85a8ed3f1cb0fc092.png

grep不支持”|“這個,egrep支持”|“,egrep查到了包含west或north的行

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/396797.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/396797.shtml
英文地址,請注明出處:http://en.pswp.cn/news/396797.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python裝飾器的實現原理

Python中的裝飾器是通過利用了函數特性的閉包實現的,所以在說裝飾器之前,我們需要先了解函數特性,以及閉包是怎么利用了函數特性的。 1.函數特性 Python中的函數特性總的來說有四點: 1.函數作為變量傳遞 def add(x):return x 1a add 2.函數…

c語言注釋說明被計算機編譯系統忽略,C語言程序設計(陳艷 2019-2020-2)-中國大學mooc-題庫零氪...

第1章 C語言概述第1講 C語言概述隨堂測驗1、程序 #include void main() { printf("Hello, world!\n"); } 經過編譯運行會在顯示器上輸出 Hello, world! 如果希望輸出:Nice to meet you. 則應使用Nice to meet you.替換( )。A、voidB、mainC、p…

React文檔(五)組件和props

組件可以讓你將UI分割成獨立的,可復用的模塊,然后考慮將每個模塊彼此隔離。從概念上理解,組件就像js中的函數。他們接受隨意的輸入(被稱為props)然后返回React元素來描述屏幕上應該出現什么。 函數式和類式組件 定義一…

Windows 應用容器化

背景 在這個時間點,我們可能已經對 Linux 容器使用已經達到熟練掌握的程度,因為 Docker 與 Kubernetes 都是最早為 Linux 平臺設計。當我們從容器這項技術中體會到種種收益,對于我們的 windows 的應用是否也能利用容器技術簡化我們的開發運維…

python安裝函數庫pip網址_批量安裝python庫函數---pip

android Sqlite小記 1.android.database.sqlite.SQLiteException: near "": syntax error (code 1): 語法錯誤,如果你的報了這個錯誤 ... win8 VB6打開提示MSCOMCTL.ocx未注冊 從xp上復制相應的文件到win8相應的位置,如果是不可以,win8中反注冊此控件,再注…

關于OC中的block自己的一些理解(二)

一、block延伸:頁面間反向傳值 1)first頁面的代碼 - (void)viewDidLoad {[super viewDidLoad];[self setupBtn];self.view.backgroundColor [UIColor whiteColor];} - (void)setupBtn {UIButton * btn [[UIButton alloc]init];[btn addTarget:self act…

C語言多項式乘法模擬,急!!!!c語言:求n次多項式的加法和乘法

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓if(s->data.coef!0.0){s->data.expnp->data.expn;r->nexts;rs;}pp->next;qq->next;break;case 1:s->data.coefq->data.coef;s->data.expnq->data.expn;r->nexts;rs;qq->next;break;}//switch}…

opengl 安裝_如何使得支持 OpenGL 的 Flatpak 應用和游戲在專有 Nvidia 圖形驅動下工作 | Linux 中國...

一些支持 OpenGL 并打包為 Flatpak 的應用和游戲無法使用專有 Nvidia 驅動啟動。本文將介紹如何在不安裝開源驅動(Nouveau)的情況下啟動這些 Flatpak 應用或游戲。-- Logix這有個例子。我在我的 Ubuntu 18.04 桌面上使用專有的 Nvidia 驅動程序 (nvidia-driver-390)&#xff0c…

laravel -admin 禁止某一行刪除

$grid->actions(function (Grid\Displayers\Actions $actions) {if ($actions->getKey() 1) {$actions->disableDelete();} });轉載于:https://www.cnblogs.com/vinzen/p/9675823.html

thinkphp-where-數組條件-普通查詢

語法Db::table(表名)->where(條件)->select();示例$map[name] thinkphp; $map[status] 1;// 把查詢條件傳入查詢方法 Db::table(think_user)->where($map)->select();對應原始sqlSELECT * FROM think_user WHERE namethinkphp AND status1轉載于:https://blog.51…

RequireJS入門(一)

RequireJS由James Burke創建,他也是AMD規范的創始人。 RequireJS會讓你以不同于往常的方式去寫JavaScript。你將不再使用script標簽在HTML中引入JS文件,以及不用通過script標簽順序去管理依賴關系。 當然也不會有阻塞(blocking)的…

Oracle數據庫中游標的游標的使用

本人不喜歡說概念啥的,就直接說明使用方法吧 案例1: 1 DECALRE2 --聲明游標3 CURSOR C_USER(C_ID NUMBER) IS4 SELECT NAME FROM USER WHERE TYPEID C_ID;5 V_NAME C_USER%rowtype; --定義游標變量6 BEGIN7 OPEN C_USER(變量值); …

eclipse占用內存過大_idea被評最好用java開發工具,為什么用eclipse的人更多?

從事java開發一般都需要使用到一些開發工具,記得以前剛接觸java的時候還用過MyEclipse。idea被評為最好用java開發工具,為什么用eclipse的人更多?下面一起來了解下吧!IDEA畢竟不便宜啊,很多企業都買不起只能用Eclipse了&#xff…

Asp.net mvc 知多少(六)

本系列主要翻譯自《ASP.NET MVC Interview Questions and Answers 》- By Shailendra Chauhan,想看英文原版的可訪問http://www.dotnettricks.com/free-ebooks自行下載。該書主要分為兩部分,ASP.NET MVC 5、ASP.NET WEB API2。本書最大的特點是以面試問答…

數據結構c語言版總結,數據結構:C語言常見算法總結

【1】求最大值與最小值.#includevoid main(){int num[5],max,min,i;printf(\"請輸入5個數字:\")for(i0;i<5;i)scanf(\"%d\",&num)maxnum[0];minnum[0];for(i1;i<5;i){if(maxmaxnum;if(min>num)minnum;}printf(\"最大值為:%d\",max)…

selenium選錯彈出層的下拉框

要先選中這個彈出層的form元素&#xff0c;再找下拉框 public void downSelectBox(){driver.get("https://www.imooc.com/user/setprofile");driver.findElement(By.className("pull-right")).click();try {Thread.sleep(2000);} catch (InterruptedExcept…

python面向過程是基于面向對象的_Python5.1-面向對象與面向過程

面向對象&#xff1a; 將數據與函數綁定在一起&#xff0c;進行封裝&#xff0c; 這樣能夠更快速的開發程序&#xff0c;減少了重復 代碼的重寫過程。 優點&#xff1a; 易維護、易復用、易擴展&#xff0c;由于面向對象有封裝、繼承、多態性的特性&#xff0c;可以設 計出低耦…

C語言 1A gt $20,C語言輸出 1到20 的階乘之和

除了調用庫&#xff0c;絕對找不到比這更精簡的代碼了.#include#includelong long getdata(long long n){long long sum 1;while(n){sum*n--;}return sum;}int main(){long long sum 0;long long nums 20;while(nums){sumgetdata(nums--);}printf("%lld",sum);}【…

PHP設計模式——策略模式

<?php /*** 策略模式* 策略模式幫助構建的對象不必自身包含邏輯&#xff0c;而是能夠根據需要利用其他對象中的算法* * 在能夠創建基于對象的&#xff0c;由自包含算法組成的可互換對象時&#xff0c;最佳的做法是使用策略模式 */ interface Math{function calc($op1,$op2)…

自動化收益評估

1.自動化測試實施成本&#xff1a;自動化實施成本 前期開發成本 后期維護成本 2.自動化測試收益 自動化測試的運行次數 3.自動化測試實施成本比&#xff1a;怕 k*n/&#xff08;cic2&#xff09; k--手工執行自動化用例所花費的時間成本&#xff0c;n--自動化測試用例執行的次…