忽略字符的bash计数器

时间:2017-12-26 23:23:21

标签: bash counter

我在bash中有这个代码。我想问一下,我怎么能改变这个代码,例如当得到单词Aaa时:---->这个单词长度的输出将是3而不是4(我希望它忽略其他字符而只计算字母)。 谢谢你的帮助!

#!/bin/bash

words=$(tr -s '[.,: ] ' '\n' < "$1")
longest_length=0
for word in $words
do
current_length=${#word}
if ((current_length > longest_length))
    then
        longest_length=$current_length
        longest_word=$word
    fi
done

echo 'The longest word is %s and its length is %d.\n' "$longest_word" "$longest_length" 

2 个答案:

答案 0 :(得分:1)

我建议将'[.,: ] '替换为'[a-zA-Z] ',并将echo替换为printf

答案 1 :(得分:0)

一些替代工具:

$ echo "A:a:a:b-ed5f^ht" |grep -o '[a-zA-Z]' |wc -l
9

$ echo "A:a:a:b-ed5f^ht" |awk -F'[a-zA-Z]' '{print NF-1}' 
9