统计文本中每个字符出现的次数
· 技术积累 · Linux

在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'

sort.png


本文最后更新时间 2023-05-29
文章链接地址:https://me.jinchuang.org/archives/1399.html
本站文章除注明[转载|引用|原文]出处外,均为本站原生内容,转载前请注明出处


留言

顶部
您当前正在使用Internet Explorer浏览器访问本站,本站在此浏览器上兼容性较差
建议使用 Chrome, Firefox, or Edge浏览器访问本网站