# 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
5条答案
按热度按时间syqv5f0l1#
这里有一种完全避免管道的方法,只是使用
tr
和shell的方式来给予变量的长度${#variable}
:rjee0c152#
要计算字母和数字的数量,您可以将合并
grep
与wc
结合使用:只要稍加调整,你就可以修改它来计算数字或字母单词或字母数字单词,
nzrxty8p3#
您可以使用sed替换所有不属于您要查找的类型的字符,然后对结果中的字符进行字数统计。
edqdpe6u4#
在bash中,有很多方法可以分析文本文件的 * 行 、 词 * 和 * 字符 * 频率。利用bash内置的字符大小写过滤器(例如,
[:upper:]
,等等),您可以向下钻取到文本文件中每种字符类型的每次出现频率。下面是一个简单的脚本,它从stdin
读取并提供正常的wc
输出作为第一行输出,然后输出upper
,lower
,digits
,punct
和whitespace
的数量。测试输入
示例使用/输出
您可以自定义脚本,以便根据需要提供给予尽可能少或尽可能多的细节。如果你有任何问题,请告诉我。
ghhkc1vu5#
通过组合
-c
(补码)和-d
(删除)标志,可以使用tr
仅保留字母数字字符。从那里开始,它只是一些管道的问题: