2016-08-12 5 views
-3

Ich habe eine Anforderung, um Werte aus verschiedenen Dateien zu verarbeiten. Ich habe 5 Dirs Eingabe, Erfolg, manuelle, Wiederholung, aktuelle. Jedes Verzeichnis hat mehrere *.txt Dateien. Jede .txt Datei hat hostname=<hostname>. Ich möchte für jeden Hostnamen wissen, wie viele Dateien in Eingabe, Erfolg, Wiederholung, aktuelle und manuelle dir sind.Perl/Python/Bash-Skript, um Werte von Dateien zu erhalten und sie zu gruppieren

Für z.

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 

Möchten Sie wissen, ob es Bibliotheken in Perl, Python oder Bash gibt, um dies zu tun.

+2

Haben Sie versucht, etwas auszuprobieren? – ssr1012

+0

Klingt nach Hausaufgaben für mich. Bitte zeigen Sie uns, was Sie bisher versucht haben. –

+0

bash-3.2 $ cat ./input/* | sortieren | uniq -c | sortieren -nr | awk '{print $ 2 "" $ 1}' HOSTNAME = host1 2 HOSTNAME = host3 1 HOSTNAME = host2 1 bash-3.2 $ cat ./success/* | sortieren | uniq -c | sortieren -nr | awk '{print $ 2 "" $ 1}' HOSTNAME = host1 2 HOSTNAME = host2 1 – PrMeAsAr

Antwort

1

Ich empfehle, dass Sie entweder ein richtiges Bash-Skript schreiben oder, noch besser, zu einer Voll-Skriptsprache aufsteigen.

Hier ist ein Algorithmus, der funktioniert:

  1. in Ihrer Liste für jedes Verzeichnis:
    1. eine Liste von *.txt Dateien
    2. öffnen jede Datei erhalten
    3. jede Zeile der Datei gelesen Suche nach einem Treffer
      1. Bei übereinstimmenden Dateien, erhöhen Sie eine Zwei-Le vel hash/dict/Objekt/Karte/assoziatives Array (oder wie auch immer Ihre Sprache der Wahl sie nennt), die von Host und Verzeichnis eingegeben wird. Notieren Sie den Hostnamen in einer Liste.
  2. Duplikate aus der Liste von Host-Namen entfernen
  3. sortiert Liste von Host-Namen
  4. Verwenden der Liste von Host-Namen, die Liste der Verzeichnisse und die Hash der Host-Zählungen eine Tabelle zu drucken.

Hier ist a link to Perl's built in functions organized by category. Der Umgang mit regulären Ausdrücken, Dateien und Verzeichnissen ist besonders relevant.

Verwandte Themen