• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    在Linux的命令行中实现字符出现频率统计的方法

    Linux 命令行有很多的乐趣,我们可以很容易并且完善地执行很多繁琐的任务。比如,我们计算一个文本文件中字和字符的出现频率,这就是我们打算在这篇文章中讲到的。

    立刻来到我们脑海的命令,计算字和字符在一个文本文件中出现频率的 Linux 命令是 wc 命令。
    在使用的脚本来分析文本文件之前,我们必须有一个文本文件。为了保持一致性,我们将创建一个文本文件,man命令的输出如下所述。

       

    复制代码
    代码如下:
    $ man man > man.txt

    以上命令是将man命令的使用方式导入到man.txt文件里。

    我们希望能得到最平常的单词,对之前我们新建的文件执行如下脚本。

       

    复制代码
    代码如下:
    $ cat man.txt | tr ' ' '\012' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | grep -v '[^a-z]' | sort | uniq -c | sort -rn | head

    Sample Output

       

    复制代码
    代码如下:
    7557
    262 the
    163 to
    112 is
    112 a
    78 of
    78 manual
    76 and
    64 if
    63 be

    上面的脚本,输出了最常使用的十个单词。

    如何看单个的字母呢?那就用如下的命令。

       

    复制代码
    代码如下:
    $ echo 'tecmint team' | fold -w1/p> p>Sample Output/p> p> [code] t
    e
    c
    m
    i
    n
    t
    t
    e
    a
    m

    注: -w1只是设定了长度

    现在我们将从那个文本文件中掰下来的每一个字母,对结果进行排序,得到所需的输出频率的十个最常见的字符。

        $ fold -w1 man.txt | sort | uniq -c | sort -rn | head

    Sample Output

       

    复制代码
    代码如下:
    8579
    2413 e
    1987 a
    1875 t
    1644 i
    1553 n
    1522 o
    1514 s
    1224 r
    1021 l

    如何区分大小写呢?之前我们都是忽略大小写的。所以,用如下命令。

        $ fold -w1 man.txt | sort | tr '[:lower:]' '[:upper:]' | uniq -c | sort -rn | head -20

    Sample Output

       

    复制代码
    代码如下:
    11636
    2504 E
    2079 A
    2005 T
    1729 I
    1645 N
    1632 S
    1580 o
    1269 R
    1055 L
    836 H
    791 P
    766 D
    753 C
    725 M
    690 U
    605 F
    504 G
    352 Y
    344 .

    请检查上面的输出,标点符号居然包括在内。让我们干掉他,用tr 命令。GO:

       

    复制代码
    代码如下:
    $ fold -w1 man.txt | tr '[:lower:]' '[:upper:]' | sort | tr -d '[:punct:]' | uniq -c | sort -rn | head -20

    Sample Output

         

    复制代码
    代码如下:
    11636
    2504 E
    2079 A
    2005 T
    1729 I
    1645 N
    1632 S
    1580 O
    1550
    1269 R
    1055 L
    836 H
    791 P
    766 D
    753 C
    725 M
    690 U
    605 F
    504 G
    352 Y

    现在,我们有了三个文本,那就让我们用如下命令查看结果吧。

       

    复制代码
    代码如下:
    $ cat *.txt | fold -w1 | tr '[:lower:]' '[:upper:]' | sort | tr -d '[:punct:]' | uniq -c | sort -rn | head -8

    Sample Output

         

    复制代码
    代码如下:
    11636
    2504 E
    2079 A
    2005 T
    1729 I
    1645 N
    1632 S
    1580 O

    下一步我们将会生成那些罕见的至少十个字母长的单词。以下是简单的脚本:

       

    复制代码
    代码如下:
    $ cat man.txt | tr '' '\012' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | tr -d '[0-9]' | sort | uniq -c | sort -n | grep -E '..................' | head

    Sample Output

       

    复制代码
    代码如下:
    1 ──────────────────────────────────────────
    1 a all
    1 abc any or all arguments within are optional
    1 able see setlocale for precise details
    1 ab options delimited by cannot be used together
    1 achieved by using the less environment variable
    1 a child process returned a nonzero exit status
    1 act as if this option was supplied using the name as a filename
    1 activate local mode format and display local manual files
    1 acute accent

    注: 上面的.越来越多,其实,我们可以使用.{10} 得到同样的效果。

    这些简单的脚本,让我们知道最频繁出现的单词和英语中的字符。

    现在结束了。下次我会在这里讲到另一个有趣的话题,你应该会喜欢读。还有别忘了向我们提供您的宝贵意见。

    上一篇:在Linux系统上安装Wine的教程
    下一篇:linux怎么显示并拷贝当前文件路径?
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    在Linux的命令行中实现字符出现频率统计的方法 在,Linux,的,命令,行中,实现,