2017-12-14 4 views
-1

以下は私のコードですが、出力が得られません。 私は単語とその出現回数を印刷するように:あなたはより有能なシェルを使用することができる場合 アニッシュ3 マニッシュ4コマンドを使用せずにシェル内のファイルに単語の出現をカウントします。

echo -n "ENTER FILE NAME:" 
    read file 
    while read -r -a word <$file; do 
    if [ $# -ne 1 ] 
    then 
     for word in $line; do 
     # echo " $word = ${#word[*]}" 

p=0  
       done 


echo "$word = ${#word[*]}" 


fi 

break 


done 
+0

を??? ???????????コマンドを使用せずに –

+1

...クール! – Kent

+0

「コマンド」とまったく同じ意味ですか?あなたが「外部プログラム」を参照しているなら、あなたは '[$#-ne 1]'を使うべきではないと思います。 '['は実際にはいくつかのシェルの組み込みコマンドですが、Posixシェルの外部コマンドであり、あなたのタグから、私はあなたがPosix準拠のソリューションを探していると結論づけています。 – user1934428

答えて

0

、bashのように、あなたが行うことができます:

$ declare -A words # an associative array, not POSIX 

$ while read word; do let "words[$word]++"; done <<END 
anish 
manish 
anish 
manish 
anish 
END 

$ for key in "${!words[@]}"; do echo "$key ${words[$key]}"; done 
manish 2 
anish 3 
+0

うまく動作しています。 –

関連する問題