2016-08-12 7 views
-3

私は異なるファイルから値を処理する必要があります。私は入力、成功、マニュアル、再試行、現在の5つのディレクトリを持っています。各ディレクトリには複数の*.txtファイルがあります。それぞれの.txtファイルはhostname=<hostname>です。私は各ホスト名について、入力、成功、再試行、現在および手動のディレクトリにいくつのファイルがあるかを知りたいでしょう。perl/python/bashスクリプトを使用してファイルから値を取得し、それらをグループ化します

たとえば、

input 
    -> A.txt (HOSTNAME=host1) 
    -> B.txt (HOSTNAME=host2) 
    -> C.txt (HOSTNAME=host3) 
    -> D.txt (HOSTNAME=host1) 

success 
    -> P.txt (HOSTNAME=host1) 
    -> Q.txt (HOSTNAME=host2) 
    -> R.txt (HOSTNAME=host1) 

OUTPUT 
Host | Input | Success | Current | Retry | Manual 
host1 | 2  | 2  | 0  | 0  | 0 
host2 | 1  | 1  | 0  | 0  | 0 
host3 | 1  |0  | 0  | 0  | 0 

これを行うためにperl、python、またはbashにライブラリがあるかどうかを知りたいですか?

+2

これについて何か試してみましたか? – ssr1012

+0

私には宿題が好きです。これまでに何を試してみましたか教えてください。 –

+0

bash-3.2 $ cat ./input/* |並べ替え|ユニーク-c |ソート-nr | awkの{ "$ 1" $ 2を印刷} ' HOSTNAME =ホスト1 2 HOSTNAME = HOST3 1 HOSTNAME = host2の1 のbash-3.2 $猫./success/* |並べ替え|ユニーク-c |ソート-nr | HOSTNAME = host1 2 HOSTNAME = host2 1 – PrMeAsAr

答えて

1

適切なbashスクリプトを作成することをお勧めします。また、完全なスクリプト言語にステップアップすることをお勧めします。ここで

は動作しますアルゴリズムです:

  1. あなたのリスト内の各ディレクトリのために:
    1. *.txtファイル
    2. のリストを取得
    3. 各ファイルを開き、ファイルの各行を読みます一致を検索する
      1. 一致するファイルについては、ベルハッシュ/ディクティク/オブジェクト/マップ/連想配列(または選択した言語がどのようなものであってもそれらを呼び出すもの)をホストとディレクトリで設定します。リストにあるホスト名を記録します。
  2. ホスト名
  3. ホスト名
  4. の一覧表を印刷するには、ディレクトリのリストとホスト数のハッシュをホスト名のリストを使用して、ソートのリストから重複を削除。

ここはa link to Perl's built in functions organized by categoryです。正規表現、ファイル、ディレクトリを扱うことは特に重要です。

関連する問題