Linux基礎(chǔ)命令@grep、wc、管道符的使用詳解
grep
概念
grep 是一個在Unix和類Unix系統(tǒng)中廣泛使用的文本搜索工具,用于在文件中查找包含特定模式的文本行。其名稱來源于"Global Regular Expression Print",最初設(shè)計是用于在文本流中查找匹配正則表達式的文本。
語法
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ù)、字數(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 ” 進行查看,如下:
如上,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)組成,每個比特可以表示二進制的0或1。字節(jié)的最小地址able單元,是計算機中數(shù)據(jù)傳輸和存儲的基本塊,在計算機系統(tǒng)中,存儲器、文件大小、網(wǎng)絡(luò)傳輸?shù)韧ǔR宰止?jié)為單位。
- 字符:字符通常是指人類可讀的文本中的一個單元,例如字母、數(shù)字、標點符號等,字符可以由一個或多個字節(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文件進行統(tǒng)計有多少行的結(jié)果是一樣的。這其中還涉及到一個知識點,就是前面對于“ wc ”語法那里對于 ‘ 文件路徑 ’的解釋:參數(shù)‘ 文件路徑 ’ 可以作為內(nèi)容的輸入端口有關(guān)。
當管道符右邊,統(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)容,進行統(tǒng)計有多少行,結(jié)果顯示為2.
(注:為了方便理解,用\r\n表示換行。)
演示二
以下,我們用 ls 命令的結(jié)果,即終端中顯示的內(nèi)容作為結(jié)果。
充當管道符右邊命令 “ 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 ] 文件路徑
- 不帶選項默認統(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系統(tǒng)配置NAT網(wǎng)絡(luò)模式的詳細步驟(附圖文)
本文詳細指導(dǎo)如何在VMware環(huán)境下配置NAT網(wǎng)絡(luò)模式,包括設(shè)置主機和虛擬機的IP地址、網(wǎng)關(guān),以及針對Linux和Windows系統(tǒng)的具體步驟,特別提到阿里DNS服務(wù)的使用和Linux系統(tǒng)中網(wǎng)卡文件的編輯,需要的朋友可以參考下2025-04-04Linux如何用grep高效搜索二進制日志并統(tǒng)計匹配結(jié)果
在日常開發(fā)和運維工作中,日志分析是排查問題的重要手段,本文將詳細介紹?grep?處理二進制日志的技巧,并給出完整的解決方案,需要的小伙伴可以參考一下2025-04-04使用FileZilla從Linux系統(tǒng)下載文件的方法
最近做項目,遇到這樣的需求,要求將Linux系統(tǒng)的的某個文件夾下載到我Windows系統(tǒng)某個文件夾里,怎么實現(xiàn)這個功能呢?下面腳本之家小編給大家?guī)砹耸褂肍ileZilla從Linux系統(tǒng)下載文件的方法,感興趣的朋友一起看看吧2018-07-07