鍍金池/ 教程/ Linux/ shell 學(xué)習(xí)第二十二天----計(jì)算行數(shù), 字?jǐn)?shù)以及字符數(shù)
shell 學(xué)習(xí)四十一天----列出文件 ls 和 od 命令
shell 學(xué)習(xí)小結(jié)
shell 學(xué)習(xí)第二十八天----case 語(yǔ)句
shell 學(xué)習(xí)四十四天----尋找文件
shell 學(xué)習(xí)三十五天----波浪號(hào)展開(kāi)與通配符
shell 學(xué)習(xí)三十八天----執(zhí)行順序和 eval
shell 學(xué)習(xí)四十八天----文件校驗(yàn)和匹配
shell 學(xué)習(xí)四十天----awk 的驚人表現(xiàn)
shell 學(xué)習(xí)第十一天----sed 正則的精確控制
shell 學(xué)習(xí)第十七天----awk 命令
shell 學(xué)習(xí)三十九天----內(nèi)建命令
shell 學(xué)習(xí)四十五天----xargs
shell 學(xué)習(xí)三十七天----引用
shell 學(xué)習(xí)第十六天----join 練習(xí)
shell 學(xué)習(xí)第二十四天----提取開(kāi)頭或結(jié)尾數(shù)行
shell 學(xué)習(xí)第九天----分組
shell 學(xué)習(xí)第五天----基本的 I/O 重定向
shell 學(xué)習(xí)第十五天----使用 cut 選定字段
shell 學(xué)習(xí)四十六天----文件系統(tǒng)的空間信息 df 和 du 命令
shell 學(xué)習(xí)第八天----擴(kuò)展正則表達(dá)式 (ERE)
shell 學(xué)習(xí)第十九天----文本塊排序
shell 學(xué)習(xí)第二十一天----重新格式化段落
shell 學(xué)習(xí)三十六天----命令替換
shell 學(xué)習(xí)第二十天----sort 的其他內(nèi)容以及 uniq 命令
shell 學(xué)習(xí)四十二天----使用 touch 更新文件時(shí)間
shell 學(xué)習(xí)五十一天----top 命令查看進(jìn)程列表
shell 學(xué)習(xí)第一天
shell 學(xué)習(xí)五十四天----進(jìn)程系統(tǒng)調(diào)用的追蹤 strace
shell 學(xué)習(xí)五十天----查看進(jìn)程 ps 命令
shell 學(xué)習(xí)第二十七天----退出狀態(tài)和 if 語(yǔ)句
shell 學(xué)習(xí)第二十三天----打印
shell 學(xué)習(xí)三十三天----關(guān)于重定向
shell 學(xué)習(xí)四十九天----進(jìn)程建立
shell 學(xué)習(xí)第三十天----break,continue,shift,getopts
shell 學(xué)習(xí)五十五天----進(jìn)程記賬
shell 學(xué)習(xí)總結(jié)一
shell 學(xué)習(xí)第二十六天----變量與算數(shù)
shell 學(xué)習(xí)第二十二天----計(jì)算行數(shù), 字?jǐn)?shù)以及字符數(shù)
shell 學(xué)習(xí)五十八天----/proc 文件系統(tǒng)
shell 學(xué)習(xí)第二十五天----神器的管道符
shell 學(xué)習(xí)第三十二天----read 讀取一行
sheel 學(xué)習(xí)第三天
shell 學(xué)習(xí)----小結(jié)
shell 學(xué)習(xí)第十八天----文本排序
shell 學(xué)習(xí)第三十一天----函數(shù)問(wèn)題
shell 學(xué)習(xí)第十天----sed 查找與替換
shell 學(xué)習(xí)四十三天----臨時(shí)性文件的建立與使用
shell 學(xué)習(xí)四十七天----文件比較 cmp,diff,patch
shell 學(xué)習(xí)三十四天----printf 詳解
shell 學(xué)習(xí)五十七天 ----linux 任務(wù)管理,針對(duì)上一講的總結(jié)和擴(kuò)展
shell 學(xué)習(xí)第六天----小結(jié)
shell 學(xué)習(xí)第十三天----sed 案例分析
shell 學(xué)習(xí)第七天----基礎(chǔ)正則表達(dá)式 (BRE)
shell 學(xué)習(xí)第十二天----行與字符串
shell 學(xué)習(xí)小結(jié)四
shell 學(xué)習(xí)第二十九天----循環(huán)
shell 學(xué)習(xí)五十二天----刪除進(jìn)程 kill 命令
shell 學(xué)習(xí)五十六天----延遲進(jìn)程調(diào)度
shell 學(xué)習(xí)第四天----華麗的 printf 輸出
shell 學(xué)習(xí)第十五天----join 連接字段
shell 學(xué)習(xí)完結(jié)篇----希望你能看到
shell 學(xué)習(xí)第二天
shell 學(xué)習(xí)五十三天----捕獲信號(hào) trap

shell 學(xué)習(xí)第二十二天----計(jì)算行數(shù), 字?jǐn)?shù)以及字符數(shù)

計(jì)算行數(shù),字?jǐn)?shù)以及字符數(shù)

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:顯示版本信息