如何计算文件中出现的字符数减去特定列表中的字符数。这是一个示例文件:
你好吗?
我很好,你呢?
我也很好。
我想从计数中排除?
,,
和。
的任何出现。输出看起来像这样:
3
5
4
答案 0 :(得分:3)
纯粹的bash解决方案:
while IFS= read -r l; do
l=${l//[?,。]/}
echo "${#l}"
done < file
答案 1 :(得分:2)
尝试
sed 's/[,。?]//g' file | perl -C -nle 'print length'
sed
部分删除不需要的字符,perl
部分计算剩余字符。
答案 2 :(得分:2)
一种方法是从流中删除这些字符,然后使用wc -m
。下面是一个使用perl删除字符的示例:
perl -pe 's/(\?|,|,|。)//g' file.txt | \
while read -r line; do
printf "$line" | wc -m ;
done
答案 3 :(得分:2)
或更简单:
tr -d [?,,。] <file | wc -m
答案 4 :(得分:1)
一个简单的解决方案,接近this one,但使用awk
:
sed 's/[?,。]//g' file | awk '{ print length($0) }'