Linux基礎(chǔ)命令@grep、wc、管道符的使用詳解
grep
概念
grep 是一個在Unix和類Unix系統(tǒng)中廣泛使用的文本搜索工具,用于在文件中查找包含特定模式的文本行。其名稱來源于"Global Regular Expression Print",最初設(shè)計是用于在文本流中查找匹配正則表達(dá)式的文本。
語法
grep [-n] 關(guān)鍵字 文件路徑
- 選項-n:可選填。作用是在結(jié)果中顯示匹配的行的行號。
- 關(guān)鍵字:必填。表示過濾的關(guān)鍵字,帶有空格或其他特殊符號的,建議使用雙引號“ ” 將關(guān)鍵字包圍起來。
- 文件路徑:必填。表示要過濾內(nèi)容的文件路徑,可作為內(nèi)容的輸入端口
作用
通過關(guān)鍵字,篩選出指定文件中想要的內(nèi)容。
演示一
如下圖所示,( 我事先在test.txt文件里,寫入如圖所示的內(nèi)容 )通過cat指令獲取文件test,txt的內(nèi)容。
然后使用grep指令,針對test.txt文件,過濾出有 “about” 單詞的行,如圖所示:

終端只出現(xiàn)了test.txt文件中有 “about” 單詞的行的信息,同時對于指定的“about”關(guān)鍵字著重顯示。
演示二

對test.txt文件過濾出來有 “i” 關(guān)鍵字的行的信息。并且對于關(guān)鍵字著重的顯示。
演示三,帶選項 -n

終端出現(xiàn)有“happy” 關(guān)鍵字的行的信息。并且在前面基礎(chǔ)上,還多顯示了該行在test.txt文件中的第幾行。
wc
概念
wc 是一個在 Unix 和類 Unix 系統(tǒng)中使用的命令,用于統(tǒng)計文件中的字節(jié)數(shù)、字?jǐn)?shù)和行數(shù)。
wc 的名稱來自 “word count”(單詞計數(shù))的縮寫,但它不僅僅用于計算單詞數(shù)量,還提供其他計數(shù)選項。
語法
wc [ -c -m -l -w ] 文件路徑
- 選項-c:作用是統(tǒng)計bytes字節(jié)的數(shù)量。
- 選項-m:作用是統(tǒng)計字符數(shù)量。
- 選項-l:作用是統(tǒng)計行(line)數(shù)。
- 選項-w:作用是統(tǒng)計單詞(words)數(shù)量。
- 文件路徑:文件路徑,被統(tǒng)計的文件,可作為內(nèi)容的輸入端口
作用
wc,不帶選項
如下,使用cat命令,讀取test.txt文件的內(nèi)容為:
this is a test about grep,
and i wish you are happyeveryday.
使用wc命令讀test.txt文件,如下:

終端顯示: 2 13 62 test.txt
從左到右,一次代表的信息為:讀取文件的行數(shù)、讀取文件的單詞數(shù)(根據(jù)空格做單詞判斷的依據(jù))、讀取文件的字節(jié)數(shù)、讀取文件的文件名。
那么信息對不對,是不是呢?
對于行數(shù)和單詞數(shù),我們可以肉眼統(tǒng)計出來,而有多少個字節(jié)數(shù),如果嫌麻煩,我們可以通過命令 “ ls -l ” 進(jìn)行查看,如下:

如上,test.txt文件的大小有62個字節(jié),即test.txt文件內(nèi)有62個字節(jié)數(shù)。驗證正確。
-c,統(tǒng)計字節(jié)數(shù)

如上,使用選項 -c,可以單獨在終端顯示搜索文件的字節(jié)數(shù)。
-m,統(tǒng)計字符數(shù)

如上,使用選項 -m 可以單獨顯示test.txt文件內(nèi)容的字符數(shù)。
注意:
要區(qū)分字節(jié)和字符這兩個概念:
- 字節(jié):一個字節(jié)是計算機存儲的基本單位,通常由8個比特(bits)組成,每個比特可以表示二進(jìn)制的0或1。字節(jié)的最小地址able單元,是計算機中數(shù)據(jù)傳輸和存儲的基本塊,在計算機系統(tǒng)中,存儲器、文件大小、網(wǎng)絡(luò)傳輸?shù)韧ǔR宰止?jié)為單位。
- 字符:字符通常是指人類可讀的文本中的一個單元,例如字母、數(shù)字、標(biāo)點符號等,字符可以由一個或多個字節(jié)組成,具體取決于所使用的字符編碼。計算機中常見的字符編碼包括ASCII(一個字節(jié)表示一個字符)、UTF-8、UTF-16等。UTF-8使用1到4個字節(jié)表示一個字符,而UTF-16使用2或4個字節(jié)。
-l,統(tǒng)計行數(shù)

如上,使用選項 -l 可以單獨顯示test.txt文件內(nèi)容有多少行數(shù)。
-w,統(tǒng)計單詞數(shù)

如上命令,使用選項 -w 可以單獨顯示test.txt文件內(nèi)容有個單詞。
管道符
語法
- 管道符 “ | ” ,左邊的輸出結(jié)構(gòu),作為右邊的輸入。
作用
演示一

如上,我們用通過cat命令獲取文件test,txt的內(nèi)容。
接著我們使用管道符,管道符的左邊依舊是上述的命令,而管道符的右邊是用來統(tǒng)計有多少行數(shù)的命令 “wc -l”。如下:

和前面對test.txt文件進(jìn)行統(tǒng)計有多少行的結(jié)果是一樣的。這其中還涉及到一個知識點,就是前面對于“ wc ”語法那里對于 ‘ 文件路徑 ’的解釋:參數(shù)‘ 文件路徑 ’ 可以作為內(nèi)容的輸入端口有關(guān)。
當(dāng)管道符右邊,統(tǒng)計文件或內(nèi)容中有多少行的命令“ wc -l ” 中缺少文件路徑或內(nèi)容輸入,那么管道符左邊的結(jié)果,將會作為右邊 wc 命令的內(nèi)容輸入。
即左邊的結(jié)果,作為了右邊的第二個參數(shù)??梢岳斫鉃?,最終的效果是:
wc -l “this is a test about grep,\r\n and i wish you are happy everyday.”
因此對內(nèi)容,進(jìn)行統(tǒng)計有多少行,結(jié)果顯示為2.
(注:為了方便理解,用\r\n表示換行。)
演示二
以下,我們用 ls 命令的結(jié)果,即終端中顯示的內(nèi)容作為結(jié)果。
充當(dāng)管道符右邊命令 “ grep ” 的第二個參數(shù)。

結(jié)果終端過濾顯示出來有 “test” 字符串的內(nèi)容
演示三
以上的演示,可能未能體現(xiàn)出這個管道符的妙用之處,因為上述中對于管道符左邊的內(nèi)容都很少,少到即便是人為去統(tǒng)計都能統(tǒng)計出來??墒?,如果你選擇要過濾的文件特別特別多呢?
而你只需要找到有指定的內(nèi)容即可,顯然再靠人為去尋找、統(tǒng)計是不切實際的,這時便是該管道符的發(fā)揮之處了,如下:

如上,命令 “ ls -l /usr/bin | grep gtf ”,表示對 /usr/bin 文件的全部內(nèi)容,篩選過濾出有 “gtf” 字符串的內(nèi)容。結(jié)果:
終端便只顯示了帶有“gtf”的信息。
(注:需要留意終端的顯示格式,以上是用ls -l 的格式去顯示的。)
同樣的,我們可以統(tǒng)計一下這個文件具體有多少行,如下:

終端顯示結(jié)果為1720,即該文件用 ls -l 展開時擁有1720的行數(shù)。想想,如果沒有管道符這個工具,對于這個量級再人為去找,那可就不太禮貌了。
演示四
管道符還可以多重使用。如下:

“ cat test.txt” 的結(jié)果作為 “ grep this ” 的內(nèi)容輸入,
“ cat test.txt | grep this ” 又可以作為 “ grep a ” 的內(nèi)容輸入。
結(jié)果終端顯示如上:
“ cat test.txt | grep this ”結(jié)果為:“ this is a test about grep”。
最終命令為: grep a “ this is a test about grep”
結(jié)果顯示如上,對于輸入內(nèi)容過濾出有關(guān)鍵字 “ a ”的行數(shù),并且著重顯示關(guān)鍵字。
演示五

總結(jié)
1、grep
- 從文件中通過關(guān)鍵字過濾文件行。
- 語法:grep [-n] 關(guān)鍵字 文件路徑
- 選項-n,可選填。表示在結(jié)果中顯示匹配的行的行號。
- 參數(shù):關(guān)鍵字,必填。表示過濾的關(guān)鍵字,建議使用雙引號” ”將關(guān)鍵字包圍起來。
- 參數(shù):文件路徑,必填。表示要過濾內(nèi)容的文件路徑,可作為管道符的輸入。
2、wc
- 命令計文件的行數(shù)、單詞數(shù)量、字節(jié)數(shù)、字符數(shù)等。
- 語法: wc [ -c -m -l -w ] 文件路徑
- 不帶選項默認(rèn)統(tǒng)計:行數(shù)、單詞數(shù)、字節(jié)數(shù)
- -c 字節(jié)數(shù)、-m 字符數(shù)、-l 行數(shù)、-w 單詞數(shù)
- 參數(shù):被統(tǒng)計的文件路徑??勺鳛楣艿婪妮斎搿?/li>
3、管道符
- 將管道符左邊命令的結(jié)果,作為右邊命令的輸入
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Linux定時任務(wù)Crontab命令使用詳解與總結(jié)
本為大家介紹了Linux定時任務(wù)Crontab命令使用詳解并總結(jié)Crontab命令的一些使用技巧以及工作中遇到的一些問題解決方法2018-10-10
如何利用多核CPU來加速你的Linux命令(GNU Parallel)
這篇文章主要介紹了如何利用多核CPU來加速你的Linux命令(GNU Parallel),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01
apache啟動報 shmget() failed: Invalid argument的解決方法
在apache啟動時報錯:“shmget() failed: Invalid argument”,如何解決呢?這里簡單分享下,方便需要的朋友2013-06-06
CentOS7 LNMP+phpmyadmin環(huán)境搭建 第三篇phpmyadmin安裝
這篇文章主要介紹了CentOS7 LNMP+phpmyadmin環(huán)境搭建,第三篇phpmyadmin安裝,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07
Apache負(fù)載均衡設(shè)置方法 mod_proxy使用介紹
本文主要講解了Apache負(fù)載均衡功能的代碼配置,首先我們通過幾個模塊的功能進(jìn)行配置,之后就會發(fā)現(xiàn)其中的奧秘了,那么我們還是來具體看文章吧2012-10-10

