我在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"
答案 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