経験豊富な誰かが私のbashスクリプトを見て、それをより単純にする方法をアドバイスできますか?

EvelinaCZ

私の仕事は、ファイル内のランダムな文字の頻度を表示するスクリプトを作成することです。出力には、aからz(大文字と小文字は区別されません)の頻度がパーセントで表示されます。以下のスクリプトを作成しましたが、スクリプトを単純化する方法があるかどうか疑問に思います。


#!/bin/bash

echo Hello, please tell me in which file shall I count the letters:
read file

TOTAL=$( grep -o [[:alpha:]] $file | wc -l )

A=$( grep -io a $file | wc -l )
B=$( grep -io b $file | wc -l )
C=$( grep -io c $file | wc -l )
D=$( grep -io d $file | wc -l )
E=$( grep -io e $file | wc -l )
F=$( grep -io f $file | wc -l )
G=$( grep -io g $file | wc -l )
H=$( grep -io h $file | wc -l )
I=$( grep -io i $file | wc -l )
J=$( grep -io j $file | wc -l )
K=$( grep -io k $file | wc -l )
L=$( grep -io l $file | wc -l )
M=$( grep -io m $file | wc -l )
N=$( grep -io n $file | wc -l )
O=$( grep -io o $file | wc -l )
P=$( grep -io p $file | wc -l )
Q=$( grep -io q $file | wc -l )
R=$( grep -io R $file | wc -l )
S=$( grep -io s $file | wc -l )
T=$( grep -io t $file | wc -l )
U=$( grep -io u $file | wc -l )
V=$( grep -io v $file | wc -l )
W=$( grep -io w $file | wc -l )
X=$( grep -io x $file | wc -l )
Y=$( grep -io y $file | wc -l )
Z=$( grep -io z $file | wc -l )


echo Frequency of 'a': $(($A*100/$TOTAL))%
echo Frequency of 'b': $(($B*100/$TOTAL))%
echo Frequency of 'c': $(($C*100/$TOTAL))%
echo Frequency of 'd': $(($D*100/$TOTAL))%
echo Frequency of 'e': $(($E*100/$TOTAL))%
echo Frequency of 'f': $(($F*100/$TOTAL))%
echo Frequency of 'g': $(($G*100/$TOTAL))%
echo Frequency of 'h': $(($H*100/$TOTAL))%
echo Frequency of 'i': $(($I*100/$TOTAL))%
echo Frequency of 'j': $(($J*100/$TOTAL))%
echo Frequency of 'k': $(($K*100/$TOTAL))%
echo Frequency of 'l': $(($L*100/$TOTAL))%
echo Frequency of 'm': $(($M*100/$TOTAL))%
echo Frequency of 'n': $(($N*100/$TOTAL))%
echo Frequency of 'o': $(($O*100/$TOTAL))%
echo Frequency of 'p': $(($P*100/$TOTAL))%
echo Frequency of 'q': $(($Q*100/$TOTAL))%
echo Frequency of 'r': $(($R*100/$TOTAL))%
echo Frequency of 's': $(($S*100/$TOTAL))%
echo Frequency of 't': $(($T*100/$TOTAL))%
echo Frequency of 'u': $(($U*100/$TOTAL))%
echo Frequency of 'v': $(($V*100/$TOTAL))%
echo Frequency of 'w': $(($W*100/$TOTAL))%
echo Frequency of 'x': $(($X*100/$TOTAL))%
echo Frequency of 'y': $(($Y*100/$TOTAL))%
echo Frequency of 'z': $(($Z*100/$TOTAL))%

上記のスクリプトの最初の部分を置き換える以下のスクリプトのようにforループを使用することを検討しました...しかし、これらの出力をさらに処理する方法があるかどうかわからないため、スタックしましたか?


#!/bin/bash

echo File:
read file

TOTAL=$( grep -o [[:alpha:]] $file | wc -l )

for letter in {a..z} 
do echo grep -io $letter $file | wc -l

done

また、小数点以下2桁でスクリプトを出力する方法はありますか?

これは私の最初のスクリプトなので、慈悲深くお願いします:)しかし、改善する方法についてのフィードバックやアドバイスに感謝します。

エリック・デュミニル

あなたはほとんどそこにいました!必要な出力と使用するかどうかに応じて、2つのバリアントを使用したソリューションを次に示しますbc

#!/bin/bash
echo File:
read  file

TOTAL=$( grep -o "[[:alpha:]]" "$file" | wc -l )

for letter in {a..z} 
do
  count=$(grep -io $letter "$file" | wc -l)
  echo "Frequency of $letter : $(bc <<< "scale=2; $count*100/$TOTAL")%" # Variant with floats, requires bc
  echo "Frequency of $letter : $(($count*100/$TOTAL))%"                 # Variant with integers
done

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

単純なループの助けを借りて後でアクセスできるような方法でこのスクレイピングされたデータを保存する方法を見つけることができませんか?

分類Dev

[Powershell / SharePoint]誰かが私のスクリプトを確認して7日より古いSharepointリストアイテムを削除できますか?「Null配列にインデックスを付けることができません」を取得する

分類Dev

PHPスクリプトにエラーが見つかりません。誰かが私にそれを指摘できますか

分類Dev

私は自分のサーバーを実行しようとしているときにプログラムを持っていますそれは私がDjangoにかなり慣れていないので非常に単純なサーバーです

分類Dev

クラスが豊富な比較メソッドを実装しているかどうかを確認するにはどうすればよいですか?

分類Dev

誰かがすべてのサブセットを通過せずにそのようなタスクを解決するというアイデアをアドバイスできますか?

分類Dev

Googleドライブのカールリクエストが通常、Google Chromeのドラッグアンドドロップアップロードよりもはるかに速いアップロード速度を経験するのはなぜですか?

分類Dev

誰かが私のbashスクリプトのプレックスメディアを見ているかどうかを認識する方法

分類Dev

私はMavenのから生成されたjarファイルを使用して私のアプリのためにinstall4jを経由してインストーラを作成しました。.exeファイルを実行するときに、なぜそれがメインクラスを見つけることができませんか?

分類Dev

私のアンドロイドスタジオプロジェクトは私にAPKを構築するためのオプションを与えていません。どのように私はそれを修正することができますか?

分類Dev

私のアプリはデバイス上で遅くなりますそれは私が使用する画像のためであり、ハードコードされた幅と高さを削除するにはどうすればよいですか?

分類Dev

誰かが簡単なperlスクリプトで私を助けてくれますか

分類Dev

サーバークライアントコードがありますが、このビットはAS3にあり、C#で作業しています。誰かが私がそれを翻訳するのを手伝ってもらえますか?

分類Dev

私はrerunFailingTestsCountシュアファイアの機能を有効にして。どのように私は、豊富なテストデータを表示するにはジェンキンスCIを設定しますか。

分類Dev

シーンに2つのカスタムスプライトを追加します。これらのスプライトのメソッドが相互に影響するのはなぜですか。誰でも私のコードに間違いを見つけることができますか?ありがとう

分類Dev

これは、sureshクラスのオブジェクトを作成できない単純な抽象化デモコードです。誰かがここで何が問題になっているのかを助けてくれますか?

分類Dev

ほとんどの経験豊富なプログラマーがIDEに暗いテーマを使用することを好むのはなぜですか?

分類Dev

ほとんどの経験豊富なプログラマーがIDEに暗いテーマを使用することを好むのはなぜですか?

分類Dev

コードからタイトルバーを削除しましたが、アクティビティをフルスクリーンにしたいのですが、Android Studioでそれを行う方法を誰かに提案してもらえますか?

分類Dev

PCIデバイスに大量のメモリがあり、BIOSがそれを割り当てるのに適した空の物理アドレス領域を見つけることができない場合はどうなりますか?

分類Dev

単純なエイリアスコマンドを使用してシステムIPを見つけることができるように、bashrcでエイリアスを設定するにはどうすればよいですか?

分類Dev

単純なアプリの場合、Appleプッシュ通知を使用する必要がありますか、それとも単にバックグラウンドでデータをプルする必要がありますか?

分類Dev

時間の経過とともにディスクスペースの使用状況を追跡するための私のbashスクリプト:ハッキーを減らす方法(「eval」の回避など)に関するアドバイスはありますか?

分類Dev

IPythonによって提供される追加のより豊富なオブジェクト表現を宣言するにはどうすればよいですか?

分類Dev

このスクリプトファイルの関数を毎回ソースすることなくロードするにはどうすればよいですか?「コマンドが見つかりません」(Bash /スクリプトの基本)

分類Dev

誰かが私のラップトップを盗んだ場合、マウントされたTrueCryptドライブにアクセスできますか?

分類Dev

誰かが私が見ているものと、デュアルブートラップトップ上のUbuntuOSのストレージを拡張するためにどのようにそして何を使用すべきかを理解するのを手伝ってくれますか?

分類Dev

アプリの購入をどのようにテストしますか?私が今それをしている方法は本当に遅いです

分類Dev

SSH経由のルートログインが非常に悪いので、誰もがそれを無効にするようにアドバイスするのはなぜですか?

Related 関連記事

  1. 1

    単純なループの助けを借りて後でアクセスできるような方法でこのスクレイピングされたデータを保存する方法を見つけることができませんか?

  2. 2

    [Powershell / SharePoint]誰かが私のスクリプトを確認して7日より古いSharepointリストアイテムを削除できますか?「Null配列にインデックスを付けることができません」を取得する

  3. 3

    PHPスクリプトにエラーが見つかりません。誰かが私にそれを指摘できますか

  4. 4

    私は自分のサーバーを実行しようとしているときにプログラムを持っていますそれは私がDjangoにかなり慣れていないので非常に単純なサーバーです

  5. 5

    クラスが豊富な比較メソッドを実装しているかどうかを確認するにはどうすればよいですか?

  6. 6

    誰かがすべてのサブセットを通過せずにそのようなタスクを解決するというアイデアをアドバイスできますか?

  7. 7

    Googleドライブのカールリクエストが通常、Google Chromeのドラッグアンドドロップアップロードよりもはるかに速いアップロード速度を経験するのはなぜですか?

  8. 8

    誰かが私のbashスクリプトのプレックスメディアを見ているかどうかを認識する方法

  9. 9

    私はMavenのから生成されたjarファイルを使用して私のアプリのためにinstall4jを経由してインストーラを作成しました。.exeファイルを実行するときに、なぜそれがメインクラスを見つけることができませんか?

  10. 10

    私のアンドロイドスタジオプロジェクトは私にAPKを構築するためのオプションを与えていません。どのように私はそれを修正することができますか?

  11. 11

    私のアプリはデバイス上で遅くなりますそれは私が使用する画像のためであり、ハードコードされた幅と高さを削除するにはどうすればよいですか?

  12. 12

    誰かが簡単なperlスクリプトで私を助けてくれますか

  13. 13

    サーバークライアントコードがありますが、このビットはAS3にあり、C#で作業しています。誰かが私がそれを翻訳するのを手伝ってもらえますか?

  14. 14

    私はrerunFailingTestsCountシュアファイアの機能を有効にして。どのように私は、豊富なテストデータを表示するにはジェンキンスCIを設定しますか。

  15. 15

    シーンに2つのカスタムスプライトを追加します。これらのスプライトのメソッドが相互に影響するのはなぜですか。誰でも私のコードに間違いを見つけることができますか?ありがとう

  16. 16

    これは、sureshクラスのオブジェクトを作成できない単純な抽象化デモコードです。誰かがここで何が問題になっているのかを助けてくれますか?

  17. 17

    ほとんどの経験豊富なプログラマーがIDEに暗いテーマを使用することを好むのはなぜですか?

  18. 18

    ほとんどの経験豊富なプログラマーがIDEに暗いテーマを使用することを好むのはなぜですか?

  19. 19

    コードからタイトルバーを削除しましたが、アクティビティをフルスクリーンにしたいのですが、Android Studioでそれを行う方法を誰かに提案してもらえますか?

  20. 20

    PCIデバイスに大量のメモリがあり、BIOSがそれを割り当てるのに適した空の物理アドレス領域を見つけることができない場合はどうなりますか?

  21. 21

    単純なエイリアスコマンドを使用してシステムIPを見つけることができるように、bashrcでエイリアスを設定するにはどうすればよいですか?

  22. 22

    単純なアプリの場合、Appleプッシュ通知を使用する必要がありますか、それとも単にバックグラウンドでデータをプルする必要がありますか?

  23. 23

    時間の経過とともにディスクスペースの使用状況を追跡するための私のbashスクリプト:ハッキーを減らす方法(「eval」の回避など)に関するアドバイスはありますか?

  24. 24

    IPythonによって提供される追加のより豊富なオブジェクト表現を宣言するにはどうすればよいですか?

  25. 25

    このスクリプトファイルの関数を毎回ソースすることなくロードするにはどうすればよいですか?「コマンドが見つかりません」(Bash /スクリプトの基本)

  26. 26

    誰かが私のラップトップを盗んだ場合、マウントされたTrueCryptドライブにアクセスできますか?

  27. 27

    誰かが私が見ているものと、デュアルブートラップトップ上のUbuntuOSのストレージを拡張するためにどのようにそして何を使用すべきかを理解するのを手伝ってくれますか?

  28. 28

    アプリの購入をどのようにテストしますか?私が今それをしている方法は本当に遅いです

  29. 29

    SSH経由のルートログインが非常に悪いので、誰もがそれを無効にするようにアドバイスするのはなぜですか?

ホットタグ

アーカイブ