wc 命令可能是 linux 工具集里最古老也最簡(jiǎn)單的工具程序。wc 的默認(rèn)輸出是一行報(bào)告,包括行數(shù),字?jǐn)?shù)以及字節(jié)數(shù):
echo this is a test of the emergency broadcast system | wc
1 9 49
如果要求僅輸出部分結(jié)果,可以使用的選項(xiàng)有:-c
(字節(jié)數(shù)),-l
(行數(shù)),-w
(字?jǐn)?shù));
echo test one two three | wc -c
19
echo test one two three | wc -l
1
echo test one two three | wc -w
4
-c
選項(xiàng)原本是表示字符數(shù),但因?yàn)橛卸嘧止?jié)字符集的編碼存在----像是 UTF-8,因此在當(dāng)前系統(tǒng)上,字節(jié)數(shù)已不再等同于字符數(shù)了,也因此,posix 出現(xiàn)了 -m
選項(xiàng),用以計(jì)算多字節(jié)字符,對(duì) 8 位字符數(shù)據(jù)而言,它是等同于 -c
的。
雖然 wc 最長(zhǎng)處理的是來(lái)自于管道的輸入數(shù)據(jù),但它也接受命令行的文件參數(shù),可以生成一行一個(gè)結(jié)果,再附上報(bào)告:計(jì)算兩個(gè)文件里的數(shù)據(jù)
輸入命令:wc /etc/passwd /etc/group
輸出結(jié)果:
40 61 1804 /etc/passwd
64 64 874 /etc/group
104 125 2678 總用量
wc 的現(xiàn)代版會(huì)隨 locale 而有不同結(jié)果: 將環(huán)境變量 LC_CTYPE
設(shè)為想用的 locale
,會(huì)影響 wc 把字節(jié)序列解釋為字符或單詞分隔器。
做一個(gè)操作,需要把一個(gè)文件的行數(shù)存在另一個(gè)文件里??墒沁@個(gè) wc 還會(huì)同時(shí)輸出文件名。咋辦?簡(jiǎn)單,用管道處理一下
wc -l demo.txt | awk -F""'{print$1}'
這樣,我們就把想要的文件行數(shù)給取到了,至于存在另一個(gè)文件里,我們可以把 awk 的 print 結(jié)果重定向到文件啊。
補(bǔ)充:wc 所有選項(xiàng)
-c
:統(tǒng)計(jì)字節(jié)數(shù)-l
:統(tǒng)計(jì)行數(shù)-m
:統(tǒng)計(jì)字符數(shù)。 這個(gè)標(biāo)志不能與 -c 標(biāo)志一起使用-w
:統(tǒng)計(jì)字?jǐn)?shù)。 一個(gè)字被定義為由空白,挑個(gè)或換行字符分隔的字符串。-L
:打印最常行的長(zhǎng)度-help
:顯示幫助信息--version
:顯示版本信息