2016-04-25 11 views
1

しばらくの間、私は* .txtファイルと出力単語の出現を読むべきbashスクリプトを書こうとしていました。私は今まで運がなかった。私はアルゴリズムを知っている、唯一の問題は構文です。ワードカウントのためのBashシェルスクリプト

このスクリプトはどのように動作しますか?

私はターミナルで./myScript.sh myTextFile.txtを入力すると、それを出力すべき最大から、このような割合で最小にソートされた順序ですべての単語の出現:

17 is 7.1% 
12 all 6.4% 
10 house 5.5% 
5 tree 3.7% 

........... .........とsoo on。

スイッチを入れた場合、./myScript.sh -x 3 myTextFile.txtは3文字以上の単語しか出力しません。

私がスイッチを入れたら、./myScript.sh -y 4 myTextFile.txtは4回以上出現した言葉だけを出力すべきです。ここでは、どのスイッチを使用したか、どのスイッチを使用しているかを判断する方法について多くの問題がありました。

もちろん、存在しないファイルや間違ったスイッチを置くと、スクリプトがエラーを投げます。

ありがとうございました。

+0

あなたの試行とあなたの欠けているものが表示されるようにしてください。 – fedorqui

+0

あなたのスクリプトを表示して助けてもらえますか? – Auzias

答えて

1

あなたはワードカウントを取得するためにawkを使用することができます。

awk '{for(i=1;i<=NF;i++){a[$i]++;tot++}}END{for(j in a) {printf("%s %s %2.1f%\n",a[j],j,a[j]/tot*100)}}' myTextFile.txt | sort -g 

このawkコマンドは、すべての言葉で配列a[]を埋め、そのインデックスカウント。

totは、検出された単語の総数です。

ENDステートメントは、配列をループし、数、ワード、およびパーセンテージを表示します。

sort -gは、カウント数に基づいて数値ソートを実行しています。

関連する問題