【运维杂谈】统计文件中出现的单词数和字母数

吾日三省吾身,想出类拔萃,要把知识学牢,学全,学深,学广。


我有一个文件,我想知道里面出现了多少个单词,多少个字母。以/etc/passwd为例。

(文末有总结!!)

先说如何查找单词,我们首先进行cat,查看文件。

cat /etc/passwd        #查看该文件
497d2a159e80475882856d71bdefdc89.png

发现里面有冒号,斜线,横杠,0-9的数字和字母x,所以,先把这些替换为空,通过管道符接cat的数据并传递给tr(横杠是后来才发现的,所以只在代码上有体现,图片中没有显示)

cat /etc/passwd | tr ":/[0-9]x-" " "
ff0e90629a0f4562963d343ea472cd75.png

用xagrs -n1,把他们放到1列。

cat /etc/passwd | tr ":/[0-9]x-" " " | xargs -n1
50ea004b362648ac8bfec95c294e7e8c.png

咱们先排个序,直接后面跟sort

cat /etc/passwd | tr ":/[0-9]x-" " " | xargs -n1 | sort
f7b2b8acea5f46eeb823d0ec81f5fc48.png

排好序后,用uniq进行去重并统计

cat /etc/passwd | tr ":/[0-9]x-" " " | xargs -n1 | sort | uniq -c
24308e17863341808df9e942bda38561.png

再用sort排一次序,通过数字排序,把出现次数多的拍到前面。

搞定,统计单词,这就算结束了。

cat /etc/passwd | tr ":/[0-9]x-" " " | xargs -n1 | sort | uniq -c | sort -rn
b55f6a3574a348b78b2d7addf93c624f.png

 

接下来介绍如何统计字母,两种方法,第一种。

cat读取,然后tr进行替换,因为是统计字母,所以x就不进行替换了。

cat /etc/passwd | tr ":/[0-9]-" " "
e8c31dd439324eb58bbcc1528f6659f4.png

咱们先将他们排成1列。

cat /etc/passwd | tr ":/[0-9]-" " " | xargs -n1
cdb3da5a046f4ea18fe5a80d975a60b7.png

我们直接通过grep过滤,将匹配到的内容输出,可以用.匹配一个非换行符的字符,现在只剩字母了,也就是匹配现在所有的字符就是匹配字母了,其实grep . -o也有排序功能,之所以先排序的原因是因为用grep . -o会把空格也排序了,咱们不需要统计空格。

cat /etc/passwd | tr ":/[0-9]-" " " | xargs -n1 | grep . -o
a727195103d747b49d8afbdaf484873e.png

到这里先排序,方便去重,再去重统计,并按出现次数排序,到这里就搞定了。

cat /etc/passwd | tr ":/[0-9]-" " " | xargs -n1 | grep . -o | sort | uniq -c | sort -rn
6bab8e3183684cd38d826e45e254a38a.png

 

第二种方法是不用.进行匹配,而是用[a-z],省略了tr替换等步骤。

首先我们cat读取,然后用grep排序输出。

cat /etc/passwd | grep [a-z] -o
c6ba16227d624015bcaf829e27ea4529.png

到这里先排序,方便去重,再去重统计,并按出现次数排序,同样搞定!

cat /etc/passwd | grep [a-z] -o | sort | uniq -c | sort -rn
9868f52137c94d08881aaccbb63d7d0f.png

 

总结如下:

找字母及出现次数:
cat /etc/passwd | tr ":/[0-9]x-" " " | xargs -n1 | sort | uniq -c | sort -rn
找单词及出现次数:
方法1:
cat /etc/passwd | tr ":/[0-9]-" " " | xargs -n1 | grep . -o | sort | uniq -c | sort -rn
方法2:
cat /etc/passwd | grep [a-z] -o | sort | uniq -c | sort -rn

我是koten,10年运维经验,持续分享运维干货,感谢大家的阅读和关注!

 

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是koten

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值