通过shell脚本计算文件中的字符数
我想检查文件中从开始到EOF字符的字符数。 任何人都可以告诉我如何通过shell脚本来做到这一点
这将做到这一点:
wc -c filename
如果您只想输出中没有重复文件名的计数:
wc -c < filename
编辑:
使用-m
来计算字符而不是字节(如Sébastien的答案所示)。
#!/bin/sh wc -m $1 | awk '{print $1}'
wc -m
统计字符的数量; awk
命令仅打印字符数,省略文件名。
wc -c
会给你的字节数(可以是不同的字符数,取决于编码,你可能有一个字符编码几个字节)。
awk '{t+=length($0)}END{print t}' file3
要得到string的确切字符数,可以使用printf,而不是echo,cat,或者直接在文件上运行wc -c,因为使用echo,cat等会计算一个换行符,这会给你的字符数量换行符。 所以,如果你使用echo等文件,那么一个带有“hello”文本的文件将会打印6,但是如果你使用printf,它会返回确切的5,因为这里没有换行符。
如何使用printf来计算string中的字符:
$printf '6chars' | wc -m 6
要将其转换为脚本,您可以在文本文件上运行以计算字符数,将以下内容保存在名为print-character-amount.sh的文件中:
#!/bin/bash characters=$(cat "$1") printf "$characters" | wc -m
chmod + x在文件print-character-amount.sh中包含上面的文本,将文件放在PATH中(例如,/ usr / bin /或任何以.bashrc文件forms导出为PATH的目录),然后在文本文件types上运行脚本:
print-character-amount.sh file-to-count-characters-of.txt
awk只
awk 'BEGIN{FS=""}{for(i=1;i<=NF;i++)c++}END{print "total chars:"c}' file
只有壳
var=$(<file) echo ${#var}
ruby(1.9+)
ruby -0777 -ne 'print $_.size' file
以下脚本经过testing并给出了预期的结果
\#!/bin/bash echo "Enter the file name" read file echo "enter the word to be found" read word count=0 for i in \`cat $file` do if [ $i == $word ] then count=\`expr $count + 1` fi done echo "The number of words are $count"
我会认为最好是使用stat
来查找文件的大小,因为文件系统已经知道了,而不是使用awk
或wc
来读取整个文件 – 尤其是如果它是一个多文件系统, GB文件或可能不在HSM文件系统中的文件。
stat -c%s file
是的,我承认它没有考虑多字节字符,但会补充说,OP从来没有澄清这是否是一个问题。