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

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

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


我有一个文件,我想知道里面出现了多少个单词,多少个字母。以/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年运维经验,持续分享运维干货,感谢大家的阅读和关注!

目录
相关文章
|
3月前
|
运维 Linux 网络安全
利用群晖NAS+shell脚本实现运维命令执行结果文件自动上传
利用群晖NAS+shell脚本实现运维命令执行结果文件自动上传
126 0
|
8月前
|
运维 Shell Python
【运维知识高级篇】超详细的Shell编程讲解2(变量切片+统计变量长度+字串删除+字串替换+七种方法进行数值运算+整数比较+多整数比较+文件判断+字符串比对+正则比对+配合三剑客的高阶用法)(一)
【运维知识高级篇】超详细的Shell编程讲解2(变量切片+统计变量长度+字串删除+字串替换+七种方法进行数值运算+整数比较+多整数比较+文件判断+字符串比对+正则比对+配合三剑客的高阶用法)
91 0
|
8月前
|
运维 Shell Perl
【运维知识高级篇】超详细的Shell编程讲解2(变量切片+统计变量长度+字串删除+字串替换+七种方法进行数值运算+整数比较+多整数比较+文件判断+字符串比对+正则比对+配合三剑客的高阶用法)(二)
【运维知识高级篇】超详细的Shell编程讲解2(变量切片+统计变量长度+字串删除+字串替换+七种方法进行数值运算+整数比较+多整数比较+文件判断+字符串比对+正则比对+配合三剑客的高阶用法)(二)
94 0
|
8月前
|
运维 Linux
【运维知识基础篇】Linux文件属性
【运维知识基础篇】Linux文件属性
67 0
|
10月前
|
运维 Linux
【Linux运维】创建目录,文件,查看
【Linux运维】创建目录,文件,查看
175 0
|
11月前
|
运维
运维小笔记:清理指定后缀名文件的 powerhsell 小脚本
在运维值班每天都需要从系统导出这种数据,压缩好放在工作电脑上,解压用脚本做汇总。但是长期都没删除各个日期下的压缩包。几年下来,有上千个目录,也不知道哪些目录中有没有删除的压缩包。一个一个手删太累了,不妨做个 powershell 小脚本一键搞定吧。
72 0
|
11月前
|
存储 运维 Linux
【运维】PowerShell编程 目录文件相关方法的封装与案例详解
本文实现一个目录管理类,归纳了 Powershell 中常用的文件路径方法。这些方法可以迅速方便的用于 Powershell 编写大型运维脚本中。以简单使用为目的封装常用目录文件操作。完成源代码在作者的github上可以找到。
133 0
|
运维 大数据 Windows
【大数据开发运维解决方案】windows定期清理指定目录文件(保留指定天数日志)
定期清理windows指定目录文件 1、编辑clean.bat脚本加入下面内容: 根据实际需要替换指定目录和时间,这里只保留F:\testbat目录最近七天的所有文件。 forfiles /p "F:\testbat" /s /m *.* /d -7 /c "cmd /c del @path" 保存退出 2、加入windows定期执行计划: 在win系统中,选择计算机管理-》系统工具-》任务计划...
【大数据开发运维解决方案】windows定期清理指定目录文件(保留指定天数日志)
|
弹性计算 运维 Java
第十七届“振兴杯”全国青年职业技能大赛计算机程序设计员(云计算平台运维与开发)(职工组)赛项决赛技术文件
计算机程序设计员(云计算平台运维与开发)竞赛项目的技术标准以云计算平台的开发、运维等相关职业技能标准为基础,涵盖相关内容
323 0
|
弹性计算 运维 Java
第十七届“振兴杯”全国青年职业技能大赛计算机程序设计员(云计算平台运维与开发)(职工组)赛项决赛技术文件
计算机程序设计员(云计算平台运维与开发)竞赛项目的技术标准以云计算平台的开发、运维等相关职业技能标准为基础,涵盖相关内容