首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
数据库
›
分布式数据库
›
Linux: Shell编程中的应用之基于sh举行数据统计 ...
返回列表
发新帖
Linux: Shell编程中的应用之基于sh举行数据统计
[复制链接]
发表于 2026-1-4 21:11:12
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
应用场景
对一个英语字典做统计
统计字符出现最多,并举行排序输出
实现思绪
这里必要
统计每个字母出现的次数 grep 下令
小写转大写
可以先在下令行实验
$ grep -i a words.txt
-i 忽略巨细写
这里每一行大概包罗不止一个匹配的字母
$ grep -io a words.txt
-o 只体现匹配行中不为空的匹配部分,如许的部分被单独体现在一行上
为了统计某个字母的全部统计,必要加 -o
$ grep -io a words.txt | wc -l 统计行数
这里会有一个行数的数字输出
可以对比 不加 o 参数的区别,输出肯定是少的
继承在
终端
中输入实验
$ for char in {a..z}; do
> grep -io "$char" words.txt | wc -l
> done
之后按下回车,变会输出几行数字
以上是我们的思绪
情况准备
1 )字典集 words.txt
部分信息展示如下:
aa
aaa
aah
aahed
aahing
aahs
aal
aalii
aaliis
aals
aam
aardvark
aardvarks
... 后续过多,不便在此展示
复制
代码
此文件资源在文章顶部可举行下载
2 ) 脚本准备
$ vim statistics.sh
#!/bin/bash
# Verification of parameter
# 确认参数, 不存在参数,则提示并退出
if [ -z $1 ]
then
echo "Please enter the file of dictionary !"
exit
fi
# Verification of file existence
# 确认文件存在
if [ ! -e $1 ]
then
echo "Please make sure that the file of dictionary exists !"
exit
fi
# Definition of function
# 函数定义
statistics () {
# 遍历 a ~ z 中间的 26 个字母
for char in {a..z}
do
# tr 命令是 translate 的缩写,用于转化或删除字符
# tr /a-z/ /A-Z/ 表示将所有的小写字母转化为对应的大写字母
echo "$char - `grep -io "$char" $1 | wc -l`" | tr /a-z/ /A-Z/ >> tmp.txt
done
# 使用 sort 命令对 tmp.txt 文件中的行进行排序
# -r 倒序排列,-n 对数字排序,-k 指定根据哪几列进行排序,-t 指定列之间的分隔符
sort -rn -k 2 -t - tmp.txt
rm tmp.txt
}
# Use of function
# 函数使用
statistics $1
复制
代码
授权实行:$ chmod +x statistics.sh
实行:$ ./statistics.sh words.txt
终极输出结果
E - 363325
I - 297800
A - 273400
S - 245420
N - 242172
O - 241766
R - 237931
T - 223998
L - 187617
C - 146090
U - 126597
P - 109040
D - 108173
M - 99955
H - 86490
G - 80206
Y - 67946
B - 61975
F - 38763
V - 32467
K - 25618
W - 22053
Z -13932
X - 10112
Q - 5696
J - 5073
复制
代码
大概的优化
除了一个参数,也就是要统计的字典文件的名字
还可以添加其他参数来完成更多任务
可以改变输出的情势,使之更雅观
每一行大概输出更多信息
实验不借助中心文件 tmp.txt
…
回复
使用道具
举报
返回列表
浏览过的版块
数据仓库与分析
物联网
SAAS
Java
网络安全
程序人生
Oracle
没腿的鸟
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表