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

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

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


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

(文末有总结!!)

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

cat /etc/passwd        #查看该文件

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

咱们先将他们排成1列。

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

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

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

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

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

 

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

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

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

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

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

 

总结如下:

找字母及出现次数:
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年运维经验,持续分享运维干货,感谢大家的阅读和关注!

目录
相关文章
|
运维 Kubernetes 网络安全
Ansible自动化运维工具之主机管理与自定义配置文件(2)
Ansible自动化运维工具之主机管理与自定义配置文件(2)
140 0
|
26天前
|
运维
【运维基础知识】用dos批处理批量替换文件中的某个字符串(本地单元测试通过,部分功能有待优化,欢迎指正)
该脚本用于将C盘test目录下所有以t开头的txt文件中的字符串“123”批量替换为“abc”。通过创建批处理文件并运行,可实现自动化文本替换,适合初学者学习批处理脚本的基础操作与逻辑控制。
119 56
|
5月前
|
存储 运维 Java
Spring运维之boot项目开发关键之日志操作以及用文件记录日志
Spring运维之boot项目开发关键之日志操作以及用文件记录日志
59 2
|
5月前
|
XML 运维 Java
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
53 1
|
4月前
|
运维 前端开发 数据库
快,文本,需求,痛点,添加快捷链接,必不可少--------运维之提升运维速度的方法,一个简单的快捷链接添加页面添加写法+视频播放速度一定要能够设置5px 15px的样式,.exe文件可以提升快捷
快,文本,需求,痛点,添加快捷链接,必不可少--------运维之提升运维速度的方法,一个简单的快捷链接添加页面添加写法+视频播放速度一定要能够设置5px 15px的样式,.exe文件可以提升快捷
|
6月前
|
运维 Linux Docker
ChatGLM3在Docker环境部署,Linux运维免打包多渠道统计如何实现
ChatGLM3在Docker环境部署,Linux运维免打包多渠道统计如何实现
|
运维 Shell Python
【运维知识高级篇】超详细的Shell编程讲解2(变量切片+统计变量长度+字串删除+字串替换+七种方法进行数值运算+整数比较+多整数比较+文件判断+字符串比对+正则比对+配合三剑客的高阶用法)(一)
【运维知识高级篇】超详细的Shell编程讲解2(变量切片+统计变量长度+字串删除+字串替换+七种方法进行数值运算+整数比较+多整数比较+文件判断+字符串比对+正则比对+配合三剑客的高阶用法)
131 0
|
6月前
|
运维 Linux 网络安全
利用群晖NAS+shell脚本实现运维命令执行结果文件自动上传
利用群晖NAS+shell脚本实现运维命令执行结果文件自动上传
367 0
|
运维 Shell Perl
【运维知识高级篇】超详细的Shell编程讲解2(变量切片+统计变量长度+字串删除+字串替换+七种方法进行数值运算+整数比较+多整数比较+文件判断+字符串比对+正则比对+配合三剑客的高阶用法)(二)
【运维知识高级篇】超详细的Shell编程讲解2(变量切片+统计变量长度+字串删除+字串替换+七种方法进行数值运算+整数比较+多整数比较+文件判断+字符串比对+正则比对+配合三剑客的高阶用法)(二)
128 0
|
运维 Linux
【运维知识基础篇】Linux文件属性
【运维知识基础篇】Linux文件属性
92 0
下一篇
无影云桌面