结论先行,附上最终的一行代码
grep -oE '字符串1|字符串2|字符串3' 文本.txt|wc -l
下面开始逐一梳理思路
- 创建测试文本
以《三国演义》中的虎牢关部分作为样例,创建一个虎牢关.txt
文本文档
[root@cloudmyc sanguo]# cat 虎牢关.txt
话说虎牢关下,诸侯云集.天下豪杰,奉先神威。两军阵前,吕布身着红锦百花袍,身披兽面吞头连环铠。手持方天画戟,坐下嘶风赤兔马。真是人中吕布,马中赤兔。布大喝一声“吕布在此,谁人前来送死!”话音未落,幽州公孙瓒,舞动铁槊直取吕布,前去送死。吕布挥戟,战不三合,公孙招架不住,拨马败退。吕布纵马直追,危急关头.忽闻一声怒吼,“三姓家奴吕布休要猖狂,燕人张翼德在此!” 诸侯军阵之中,一将飞出,圆睁环眼,,怒声如雷,手持丈八蛇矛,正是张飞张翼德! 吕布舍弃公孙,疾取张飞。二将大战八十余合,风起云涌,势震八方。诸侯喝彩,声盖九天!士兵看得痴呆,鼓手擂得手酸! 当时恼了虎将关云长,瞪起丹凤眼,竖起卧蚕眉。手提八十二斤青龙偃月刀,催马上前,夹击吕布。刹那间,刀若闪电,矛似流星,奉先画戟,更犹若猛虎搜山,神龙出海。时有兵刃撞击,响彻八方,声闻于天!关张奋力,三将酣战五十回合,犹然战不倒吕布。 沧海横流,方显英雄本色。乱世之中,才知豪杰笑傲。 三人战得难分难解之时,诸侯军中,奋起一将,手持雌雄双剑。刘备刘玄德,一马当先,前来助战。三英合力攻杀,意欲将吕布斩于军前! 虽吕布雄勇无双,无奈独力难支。十余回合之后,已然遮架不住。画戟带风,急取刘备,玄德急忙闪躲,再凝神看时,奉先已然纵马杀出。正是放开玉枷脱蛟龙,反身飞上虎牢关。 虎牢关前,神将天威。桃园三英,兄弟扬名。
- 在测试文本中选出指定字符串
当前想统计虎牢关.txt
文本中“吕布”这个人名出现的次数,可以先通过grep -o '吕布' 虎牢关.txt
代码,将“吕布”二字每出现一次,就输出一行
[root@cloudmyc sanguo]# grep -o '吕布' 虎牢关.txt
吕布
吕布
吕布
吕布
吕布
吕布
吕布
吕布
吕布
吕布
吕布
吕布
- 同时输出多个字符串
当前不仅想统计“吕布”出现的次数,还想统计“三姓家奴”出现的次数,可以通过grep -oE '吕布|三姓家奴' 虎牢关.txt
来实现
[root@cloudmyc sanguo]# grep -oE '吕布|三姓家奴' 虎牢关.txt
吕布
吕布
吕布
吕布
吕布
吕布
三姓家奴
吕布
吕布
吕布
吕布
吕布
吕布
- 统计第3步输出的结果有多少行
其实第3步结束后,就已经是将指定字符串按出现的次数,分行展示了出来,所以此时只需要计算行数就可以了,可以通过grep -oE '吕布|三姓家奴' 虎牢关.txt | wc -l
来实现
[root@cloudmyc sanguo]# grep -oE '吕布|三姓家奴' 虎牢关.txt | wc -l
13
这样就表示,在虎牢关.txt
文件内,“吕布”和“三姓家奴”这两个词一共出现了13次
- 看看罗贯中在《三国演义》里更偏爱谁
从网上下载一份《三国演义》的txt文本,并依次统计曹操、刘备、孙权、诸葛亮、关羽、张飞、赵云出现的次数,需要说明的是此处统计的方法是根据名称以及字来计数,比如统计曹操,就会是统计“曹操”和“孟德”两个词出现的次数,当然这也不是很全面,毕竟像“曹丞相”也是指的曹操,但本来就是娱乐一下,太过全面倒也耗费脑细胞,那么各位看官请猜一猜,上述几个人物,谁出现的次数最多呢?
下面来揭晓答案啦
人物 | 次数 |
---|---|
曹操 | 970 |
刘备 | 2110 |
孙权 | 333 |
诸葛亮 | 1847 |
关羽 | 452 |
张飞 | 422 |
赵云 | 412 |
不得不说,刘皇叔是真的强啊