我试图找到给定文件中最长的单词。在我检查每个单词的长度之前,我需要删除所有可能附加(一次或多次)单词的以下标记{,。:}。例如,对于这个文本:
:,猫狗,百科全书;删除:
我需要结果:
猫狗百科全书删除
我正在尝试这个,但是我收到了“未找到命令”:
longest=0
for word in $(<$1)
do
#new_word = $(echo "${word//[.,:]/}")
new_word = "${word//[.,:]/}"
len=${#new_word}
if (( len > longest ))
then
longest=$len
longword=$new_word
fi
done
echo The longest word is $longword and its length is $longest.
谢谢。
答案 0 :(得分:0)
您使用参数扩展替换模式是正确的。
问题是在=
(通常是任何shell)中声明变量时,bash
周围不能有任何空格。
因此,以下内容应该有效:
new_word="${word//[.,:]/}"
顺便说一句,使用while read ...
构造来循环文件中的行,使用for
非常脆弱。