如何计算文件中的数字/字母数?

时间:2016-05-15 21:10:35

标签: linux bash shell wc

我尝试用Bash计算我文件中的数字和字母数。 我知道我可以使用wc -c file来计算字符数,但是如何才能将其修改为字母和其他数字呢?

5 个答案:

答案 0 :(得分:1)

这是一种完全避免管道的方法,只需使用tr和shell的方式来给出${#variable}变量的长度:

$ cat file
123 sdf
231 (3)
huh? 564
242 wr =!
$ NUMBERS=$(tr -dc '[:digit:]' < file)
$ LETTERS=$(tr -dc '[:alpha:]' < file)
$ ALNUM=$(tr -dc '[:alnum:]' < file)
$ echo ${#NUMBERS} ${#LETTERS} ${#ALNUM}
13 8 21

答案 1 :(得分:0)

您可以使用tr通过组合-c(补全)和-d(删除)标记来仅保留字母数字字符。从那以后,这只是一个问题:

$ cat myfile.txr | tr -cd [:alnum:] | wc -c

答案 2 :(得分:0)

要计算可以grepwc合并的字母和数字的数量:

 grep -o [a-z] myfile | wc -c
 grep -o [0-9] myfile | wc -c

通过一些调整,你可以修改它来计算数字或字母或像这样的字母数字,

grep -o [a-z]+ myfile | wc -c
grep -o [0-9]+ myfile | wc -c
grep -o [[:alnum:]]+ myfile | wc -c

答案 3 :(得分:0)

您可以使用sed替换所有不符合您要求的字符,然后对结果中的字符进行字数统计。

# 1h;1!H will place all lines into the buffer that way you can replace
# newline characters
sed -n '1h;1!H;${;g;s/[^a-zA-Z]//g;p;}' myfile | wc -c

It's easy enough to just do numbers as well.
sed -n '1h;1!H;${;g;s/[^0-9]//g;p;}' myfile | wc -c

Or why not both.
sed -n '1h;1!H;${;g;s/[^0-9a-zA-Z]//g;p;}' myfile | wc -c

答案 4 :(得分:0)

有很多方法可以用来分析bash中文本文件的 word 字符频率。利用bash内置字符大小写过滤器(例如"等),您可以深入查看文本文件中每种字符类型每次出现的频率。下面是一个简单的脚本,从[ ... ]读取并提供正常[:upper:]输出作为第一行输出,然后输出stdinwc,{{ 1}},upperlower

digits

测试输入

punct

示例使用/输出

whitespace

您可以自定义脚本,为您提供尽可能少的细节。如果您有任何问题,请告诉我。