2017-12-24 26 views
0

私は指定されたファイルで最も長い単語を見つけようとしています。各単語の長さを調べる前に、単語に(1回以上)添付できるトークン{、。:}をすべて削除する必要があります。たとえば、このテキストの場合:BASHが単語から特定のトークンを削除する

:、cat dog、encyclopedia;削除します。、

を私は結果が必要です

猫犬の百科事典を

を削除し、私はこれをしようとしていますが、私は、 "コマンドが見つかりません" を取得:

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

'echo":、cat dog、encyclopedia; remove:。 " tr -d ':;。、' '? – Cyrus

+0

** '='記号の周りに空白を入れないでください** –

+1

ところで、['for'で行を読まないでください](http://mywiki.wooledge.org/DontReadLinesWithFor) –

答えて

0

パラメータ拡張置換パターンの使用が正しいです。

(一般的なシェル)で変数を宣言している間は、=の周りに空白を入れてはいけないという問題があります。

ので、以下の作業をする必要があります:、余談として

new_word="${word//[.,:]/}" 

forを使用すると、かなり脆弱であり、ファイルの行をループにwhile read ...構文を使用します。

関連する問題