如何计算文件每行中的字符数,不包括特定字符列表?

时间:2013-11-15 06:11:39

标签: bash

如何计算文件中出现的字符数减去特定列表中的字符数。这是一个示例文件:

你好吗?
我很好,你呢?
我也很好。

我想从计数中排除的任何出现。输出看起来像这样:

3
5
4

5 个答案:

答案 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) }'