在本教程中,我們將向您展示如何使用多個命令,并使用 ls、egrep、wc 和 find 命令執(zhí)行一些高級操作。 下面的命令將可用在多個方面。
10年積累的網(wǎng)站制作、網(wǎng)站建設經(jīng)驗,可以快速應對客戶對網(wǎng)站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡服務。我雖然不認識你,你也不認識我。但先建設網(wǎng)站后付款的網(wǎng)站建設流程,更有柳河免費網(wǎng)站建設讓你可以放心的選擇與我們合作。
為了實驗,我打算總共創(chuàng)建 7 個文件和 2 個文件夾(5 個常規(guī)文件和 2 個隱藏文件)。 下面的 tree 命令的輸出清楚的展示了文件和文件夾列表。
# tree -a /opt
/opt
├──magi
│ └──2g
│ ├──test5.txt
│ └──.test6.txt
├──test1.txt
├──test2.txt
├──test3.txt
├──.test4.txt
└──test.txt
2directories,7files
示例 1
統(tǒng)計當前目錄的文件(不包括隱藏文件)。 運行以下命令以確定當前目錄中有多少個文件,并且不計算點文件(LCTT 譯注:點文件即以“.” 開頭的文件,它們在 Linux 默認是隱藏的)。
# ls -l . | egrep -c '^-'
4
細節(jié):
ls : 列出目錄內容
-l : 使用長列表格式
. : 列出有關文件的信息(默認為當前目錄)
| : 將一個程序的輸出發(fā)送到另一個程序進行進一步處理的控制操作符
egrep : 打印符合模式的行
-c : 通用輸出控制
'^-' : 以“-”開頭的行(ls -l 列出長列表時,行首的 “-” 代表普通文件)
示例 2
統(tǒng)計當前目錄包含隱藏文件在內的文件。 包括當前目錄中的點文件。
# ls -la . | egrep -c '^-'
5
示例 3
運行以下命令來計數(shù)當前目錄的文件和文件夾。 它會計算所有的文件和目錄。
# ls -l | wc -l
5
細節(jié):
ls : 列出目錄內容
-l : 使用長列表格式
| : 將一個程序的輸出發(fā)送到另一個程序進行進一步處理的控制操作符
wc : 這是一個統(tǒng)計每個文件的換行符、單詞和字節(jié)數(shù)的命令
-l : 輸出換行符的數(shù)量
使用這個命令查出文本中的單詞出現(xiàn)頻率按照由高到底排序
cat words.txt |tr -cs "[a-z][A-Z]" "[\012*]"|tr A-Z a-z|sort|uniq -c|sort -k1nr -k2|head -10
但是有時我們想查找出某一個單詞的出現(xiàn)頻率這時我們可以使用如下幾個命令
文件名稱:file ?查找單詞名稱:word
操作命令:
(1)more file | grep -o word | wc -l
(2)cat file | grep -o word | wc -l
(3) grep -o test word | wc -l
如果這些還是不能滿足需求,那只能寫linux腳本進行實現(xiàn)了??梢允褂胊wk哦
1.命令格式:
wc [選項]文件...
2.命令功能:
統(tǒng)計指定文件中的字節(jié)數(shù)、字數(shù)、行數(shù),并將統(tǒng)計結果顯示輸出。該命令統(tǒng)計指定文件中的字節(jié)數(shù)、字數(shù)、行數(shù)。如果沒有給出文件名,則從標準輸入讀取。wc同時也給出所指定文件的總統(tǒng)計數(shù)。
3.命令參數(shù):
-c 統(tǒng)計字節(jié)數(shù)。
-l 統(tǒng)計行數(shù)。
-m 統(tǒng)計字符數(shù)。這個標志不能與 -c 標志一起使用。
-w 統(tǒng)計字數(shù)。一個字被定義為由空白、跳格或換行字符分隔的字符串。
-L 打印最長行的長度。
--help 顯示幫助信息
--version 顯示版本信息
4.值得注意的是,-c,c應該是count的縮寫,統(tǒng)計的是文件的字節(jié)數(shù),而不是通常我們想要的“字數(shù)”,字數(shù)的統(tǒng)計應該用-w,所以上面提到那個問題,可以怎么做呢?wc并沒有提供給我們統(tǒng)計特定一個單詞的選項,只能查找唄~所以結合grep就可以這樣簡單寫:
grep cout hello.cpp | wc -l
5.上面命令通過管道串聯(lián)起來,意思是,查找hello.cpp里所有出現(xiàn)過cout的行,統(tǒng)計行數(shù)。
但是,問題來了,如果不只想統(tǒng)計行數(shù),而是想精確到個數(shù)(一行里可能會出現(xiàn)多次),應該怎么辦呢?
這就是grep的作用了2,-o選項(only的意思)表示只選中那些匹配的地方,比如a cout yes, and b cout no.,匹配cout,結果是兩行,每行一個cout。所以要想統(tǒng)計出現(xiàn)次數(shù)的話,簡單加一個選項就好了:
cat file.csv | awk -F '\t' '{print $2}'
'\t'指的是file.csv不同列以'\t'分割,如果的是以其他符號分割,換成其她符號;
'{print $2}'是指取第2列,此處從1開始計數(shù),第1列,第2列;
一般去重之前要進行排序
cat file.csv | awk -F '\t' '{print $2}'?| sort | uniq
前半部分與命令1一樣,后面加上| sort | uniq
比如通過命令2發(fā)現(xiàn),第2列取值有兩種,分別是'neg'和‘pos’,那么我想知道有多少行的第2列取值為'pos',多少行的第2列取值為'neg'。
cat file.csv | awk -F '\t' '{print $2}'?|?grep -o 'neg'| wc -l
前半部分與命令1一樣,后面加上?|?grep -o 'neg'| wc -l
grep -o 'neg'就是取出取值為'neg'的行
wc -l 是計數(shù)有多少行
#?grep?linux?abc?|wc?-l
3
這個問題其實我回答過,abc文件內容:
/etc/vvvvv:
linux
jkdjfkjakslinux
jdkfjksjd
sdkfjksajd
jdlinux linux
sjhdfjaksjdfkjsk
wc命令的功能為統(tǒng)計指定文件中的字節(jié)數(shù)、字數(shù)、行數(shù), 并將統(tǒng)計結果顯示輸出。 語法:wc [選項] 文件… 說明:該命令統(tǒng)計給定文件中的字節(jié)數(shù)、字數(shù)、行數(shù)。如果沒有給出文件名,則從標準輸入讀齲wc同時也給出所有指定文件的總統(tǒng)計數(shù)。
最簡單的一個命令是
cat a.log |grep "str123" |wc -l
如果是某個文件夾內的,
就可以到這個文件夾后
cat *.* |grep "str123" |wc -l