在Linux统计文本中每个字符出现的次数,方便去重使用,我是用来去重网站的文字,生成字体文件
使用 grep 和 sort 两个命令
# 如果要统计文本中每个字出现的次数,您可以使用grep -o、sort和uniq -c命令的组合,具体步骤如下:
1. 使用 grep -o 命令来将文本中的每个字单独列出来,. 表示匹配文本中的每个字符,-o表示只输出匹配的字符,不输出匹配的行。命令如下:
grep -o . 文件名
2. 使用 sort 命令来对列出的每个字进行排序,命令如下:
grep -o . 文件名 | sort
3. 使用 uniq -c 命令来统计排序后的每个字出现的次数,再加一个sort -n 把重复最多的排列最下面,命令如下:
grep -o . 文件名 | sort | uniq -c |sort -n
由于去重后,每个字都是单独一行,整合为一行文本
# 使用 awk 和 tr 命令把去重后字单独显示,然后再去掉换行符
grep -o . 文件名 | sort | uniq -c | awk '{print $2}' |tr -d '\n'
使用python3脚本统计
#!/bin/env python3
text = "abcderfadfe()`.;\.,,;季赛测试是反ab阿九弗兰克撒一化哈一闪测试"
# 创建一个空字典
char_count = {}
# 遍历文本中的每个字符
for char in text:
# 判断字符是否在字典中已经存在
if char in char_count:
# 如果存在,则将该字符出现的次数加1
char_count[char] += 1
else:
# 如果不存在,则将该字符添加到字典中,并将出现次数设为1
char_count[char] = 1
# 输出每个字符出现的次数
for char, count in char_count.items():
print(f"{char} {count}次")
例子:
# 文本
abcderfadfe()`.;\.,,;季赛测试是反ab阿九弗兰克撒一化哈一闪测试
# 进行去重排序
grep -o . test.txt |sort |uniq -c|sort -n|awk '{print $2}'|tr -d '\n'
本文最后记录时间 2024-08-06
文章链接地址:https://wojc.cn/archives/1399.html
本站文章除注明[转载|引用|来源],均为本站原创内容,转载前请注明出处
文章链接地址:https://wojc.cn/archives/1399.html
本站文章除注明[转载|引用|来源],均为本站原创内容,转载前请注明出处