4
4

5 回答 5

3

一个纯粹的 bash 解决方案:

while IFS= read -r l; do
    l=${l//[?,。]/}
    echo "${#l}"
done < file
于 2013-11-16T10:37:48.253 回答
2

或更简单:

tr -d [?,,。] <file | wc -m
于 2013-11-16T01:31:05.097 回答
2

尝试

sed 's/[,。?]//g' file | perl -C -nle 'print length'

sed部分删除不需要的字符,该perl部分计算剩余的字符。

于 2013-11-15T06:23:51.663 回答
2

一种方法是从流中删除这些字符,然后使用wc -m. 这是一个使用 perl 删除字符的示例:

perl -pe 's/(\?|,|,|。)//g' file.txt | \ 
  while read -r line; do 
    printf "$line" | wc -m ; 
  done
于 2013-11-15T06:24:42.017 回答
1

一个简单的解决方案,接近这个,但使用awk

sed 's/[?,。]//g' file | awk '{ print length($0) }'
于 2013-11-15T08:01:51.137 回答