在Linux上的计数单个字符

如果你需要数量多少的每个字符包含在一个文件或短语,有一些方便的命令,您可以串在一起完成这个脚本和别名,可以使工作容易。

  • 在Facebook上分享
  • 在Twitter上分享
  • 分享在LinkedIn
  • 在Reddit分享
  • 通过电子邮件分享
  • 印刷资源
一堆书;打开一本书,散射飞信到周围环境中。
多明多明/阿列克谢德瑞/盖蒂图片社

确定有多少字符在文件很容易在Linux命令行:使用ls - l命令。

另一方面,如果你想获得一个计数的每个字符多少次出现在您的文件,你需要一个更复杂的命令或脚本。这篇文章包括几种不同的选项。

计算每个字符多少次出现在一个文件中

数数有多少每个字符都包含在一个文件,你需要串一系列命令,将考虑每个字符和使用排序命令之前,每个字符的数量多少。

要做到这一点,你可以使用这样的命令:

美元猫myfile | sed ' s / \ \ () / \ n \ 1 / g’排序| | uniq - c | 24 58列c 112我132度7 T 254 2 c 3 u 2 o 30 1 ' 50 d 4 j 29 p 23 v 25, 163 e 5 k 1 p 9 w 20。2 E 60 l 2问4 x 142 21 f 48 m 90 r 36 y 5一16 g 2米1 r 3 z 23 b 1 g 117 n 147年代1 b 51 h 1 n 119 t

sed命令将单独的文件转换成一个字符块。然后按输出排序命令。之后,每一组相同的字符数的uniq - c命令和命令用于创建多列的输出。因为结果是基于文件内容,没有人物除了列出这些文件。

注意,输出显示在字母数字字符的列表所选文件由于秩序排序命令。因为换行和显示的前两个字符不是空格只有可辨认的上下文。

如果你想显示字符的频率顺序相反,所有您需要做的就是添加第二个排序命令使用- g(一般的数字)。

美元猫myfile | sed ' s / \ \ () / \ n \ 1 / g’排序| | uniq排序- g - c | |第1列“2 O 9 w 117 u n 1 B 2问16 g 36 y 119 t 1 g 3我20。48 m 132 o N 3 z 21 f 50 d 142 1 P 4 j 23 b 51 h 147年代1 R 4 x 23 v 58 c 163 e - 2 c 5 24 60 l 254 2 e 5 k 25日90 R 2米7 T 29 112页我

扭转清单显示最常用的字符第一,添加一个r(反向)最后一个选项排序命令。

美元猫myfile | sed ' s / \ \ () / \ n \ 1 / g’排序| | uniq排序gr - C | | 24 5列254 60 l 2 C 163 e 58 C 23 v 4 x 1 R 147年代51 h 23 b 4 j 1 P 142 50 d 21 f 3 z 1 n 132 o 48 m 20。3我1 G 119 t 36 y 16 G 2问1 B 30 u 9 w 117 n 2 O 1 ' 112我29 p 90 t 2 M r 25日5 k 2 E

字符列表的顶部,我猜你猜,空格字符。第二个最常用的字符在文件中是一个“e”。没有惊喜。此外,最后列出了大写字母,因为他们并不经常使用。

请注意,如果你不想区分大写和小写字母可以插入tr(翻译)命令的命令字符串:

美元猫myfile | sed ' s / \ \ () / \ n \ 1 / g |tr的[:上:]的[低:]列排序| | uniq排序gr - c | |“我36 254 115 y 21 f 3 z 165 e 91 r 30 u 20。2 q 147年代60 l 30 p 17 g 1 ' 147 60 c 25日9 w 134 o 51 h 24 b 5 k 126 t 50 m 24 4 x 118 n 50 d 23 v 4 j

开关的位置“上”和“低”参数显示结果都大写。

计算逐字符在一个单词或短语

您还可以使用一个命令类似于上面所示数多少次每个字母出现在一个词或短语。这里有一个例子:

美元回声“Hello, World !”|sed's/\(.\)/\n\1/g' | sort | uniq -c | sort -gr | \ column 3 l 1 r 1 d 1 2 o 1 H 1 , 1 1 W 1 e 1 !

使用别名

虽然上面所示的命令是聪明的,他们不容易记住或类型。创建一个别名可以为此提供帮助。一旦你决定你喜欢什么形式的输出,将命令变成一个别名:

别名CountChars美元= " sed ' s / \ \ () / \ n \ 1 / g’排序| | uniq排序gr - c | |列”

在你保存别名. bashrc文件,这样您就可以在需要的时候使用它。然后使用这样的命令:

美元猫myfile | CountChars 254 60 l 24 5 2 C 163 e 58 C 23 v 4 x 1 R 147年代51 h 23 b 4 j 1 P 142 50 d 21 f 3 z 1 N 132 o 48 m 20。3我1 G 119 t 36 y 16 G 2问1 B 30 u 9 w 117 n 2 O 1 ' 112我29 p 90 t 2 M r 25日5 k美元2 E回声“Hello, World !”|CountChars 3 l 1 r 1 d 1 2 o 1 H 1 , 1 1 W 1 e 1 !

使用脚本

如果你想只看到字母字符,可以使用如下所示的脚本。它首先改变字母小写贯穿字母表之前,它的用途awk计算每个字母出现的次数,然后显示计数只有他们大于1。它仅适用于任何字符串作为参数提供。

# !/bin/bash #使论点小写的
字符串= $ (echo $ 1 | tr[:上:]的[低:]){char的一个. .z}做数= ' awk - f“$ {char} "{打印NF-1} ' < < < " ${}字符串“如果($ count ! = 0);然后echo - n $字符:echo $计数fi完成

运行它是这样的:

美元CountByChar“Hello, World !”
d: 1
艾凡:1
h: 1
l: 3
o: 2
r: 1
w: 1

注意人物总是会按字母顺序列出。你可以管输出的列命令如果你想要更少的行输出。

美元CountByChar“Hello, World !”|列d: 1艾凡:1h: 1l: 3o: 2r: 1w: 1

总结

你是否正在寻找字符计数在文件或短语,有一些方便的选择。将复杂的变成别名可能是最好的办法让简单的任务。

相关:

版权©2022 IDG通信公司。Raybet2

企业网络2022的10个最强大的公司