歡迎光臨
每天分享高質量文章

一個Linux幫你做高效資料統計

作者:守望,Linux應用開發者,目前在公眾號【程式設計珠璣】 分享Linux/C/C++/資料結構與演演算法/工具等原創技術文章和學習資源。

wc(world count)是一個統計檔案字詞,位元組,行數的命令,它可以幫我們非常方便的統計以上資訊。

主要引數

常見引數如下:

  • -c 統計位元組數。
  • -l 統計行數。
  • -m 統計字元數。這個標誌不能與 -c 標誌一起使用。
  • -w 統計字數。註意,這裡的字指的是由空格,換行符等分隔的字串。

我們接下來直接看幾個實體。

統計檔案行數,詞數和位元組數

$ wc test.txt 
1 1 7 test.txt

列印結果表明該檔案有1行,1個詞,7位元組。

要特別提醒的是,這裡的詞是以空格,換行符等分隔開的字串,也就是說

words 字詞

這裡只有兩個詞。

僅統計檔案行數,詞數,字元數或位元組數

僅統計單項內容時,僅需要帶上對應的引數即可,例如:

$ wc -l test.txt
1 test.txt

使用-l引數,使得只顯示行數。

但是這裡特別要註意的是字元數和位元組數的區別。位元組數是資料佔用的空間大小,而一個字元可能佔多個位元組,例如,UTF-8編碼中,一個英文字母就是一個字元,佔用空間一個位元組,而一個中文,則佔用3位元組大小。

舉個例子:

程式設計

程式設計,在這裡是兩個字元,而佔用空間是6位元組,但是使用wc -m統計會比兩個多一個,是3個字元。

$ echo 程式設計|wc -m
3
$ echo 程式設計|wc -c
7

各編碼字元佔用字元情況如下:

編碼 英文字母 中文
UTF-8 1位元組 3位元組
Unicode 1位元組 2位元組

你可以使用:

$ echo $LANG
en_GB.UTF-8

檢視編碼格式。

統計命令執行結果數量

實際上個人認為,最常用的還是-l引數,它用來統計檔案或標準輸出有多少行,那麼實際上就可以用來做很多統計的事情了。

例如,統計當前目錄下有多少個普通檔案:

$ ls -l
total 4
-rw-rw-r-- 1 hyb hyb  0 3月  21 20:32 test2.txt
-rw-rw-r-- 1 hyb hyb 13 3月  21 20:18 test.txt
$ ls -l |grep "^-"|wc -l
2

可以得到檔案數量為2。grep “^-“的意思是,獲取哪些以-開頭的行,因為普通檔案都是以-開頭的。

當然如果想統計包括子目錄的總檔案數量,可以加上-R引數:

ls -lR |grep "^-"|wc -l

再例如,檢視chrome相關行程數量:

$ ps -ef|grep google|grep -v grep |wc -l
23

類似這樣的用法還有很多,只要你想統計都可以做。

這裡再多說兩句:

  • |是管道符,ls -l|wc -l表示將ls -l的結果傳給wc命令處理
  • grep用於文字查詢,grep “a”,表明查詢包含a的行,而grep -v “b”,表明過濾包含b的行。

總結

wc命令可用於統計行數,位元組數和字元數等,而用於統計命令執行結果的數量的時候非常有效。

贊(0)

分享創造快樂