linux链接的计数,Linux终端的乐趣之把玩字词计数

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

立刻来到我们脑海的命令,计算字和字符在一个文本文件中出现频率的 Linux 命令是 wc 命令。

98455ae3fa580152e360c27b3912afa1.png

在使用的脚本来分析文本文件之前,我们必须有一个文本文件。为了保持一致性,我们将创建一个文本文件,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

262the

163to

112is

112a

78of

78manual

76and

64if

63be

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

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

$ echo'tecmint team'|fold-w1

Sample Output

t

e

c

m

i

n

t

t

e

a

m

注: -w1只是设定了长度

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

$ fold-w1

Sample Output

8579

2413e

1987a

1875t

1644i

1553n

1522o

1514s

1224r

1021l

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

$ fold-w1

Sample Output

11636

2504E

2079A

2005T

1729I

1645N

1632S

1580o

1269R

1055L

836H

791P

766D

753C

725M

690U

605F

504G

352Y

344.

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

$ fold-w1

Sample Output

11636

2504E

2079A

2005T

1729I

1645N

1632S

1580O

1550

1269R

1055L

836H

791P

766D

753C

725M

690U

605F

504G

352Y

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

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

Sample Output

11636

2504E

2079A

2005T

1729I

1645N

1632S

1580O

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

$ 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──────────────────────────────────────────

1a all

1abc anyorall arguments within are optional

1able see setlocaleforprecise details

1ab options delimitedbycannot be used together

1achievedbyusingthe less environment variable

1a child process returned a nonzeroexitstatus

1actasifthisoption was suppliedusingthe nameasa filename

1activatelocalmode formatanddisplaylocalmanual files

1acute accent

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

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

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

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值