Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Textdateien in Massen auslesen

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Sonstiges
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
micbur



Anmeldungsdatum: 05.06.2004
Beiträge: 86

BeitragVerfasst am: 15. Feb 2006 19:14   Titel: Textdateien in Massen auslesen

Hallo,

also nach meinen Begriffen habe ich alles Mögliche getan. Ich bekomme aber keinen schnellen Weg hin.

Wir wollen eine Lsite aller Domains haben, die bei uns laufen, die uns gehören und auch in Benutzung sind. Es gibt darüber bisher keine Übersicht. Nun habe ich hier über 250 Dateien von unserem DNS-Server. Darin enthalten sind alle Domains und Subdomains. Die Struktur der Dateien ist recht unterschiedlich.

Glücklicherweise fangen alle gültigen Einträge am Zeilenanfang an.
Kommentarzeilen beginnen mit einem ';'.

Ich versuche nun verzweifelt herauszubekommen, zu welcher Domaine welche Subdomaine aktiv ist. Die Dateinamen bilden dabei den Domainnamen.

Ich habe nun viele Versuche gestartet, aber ich komme einfach bisher nicht drumrum > 200 Dateien anzuschauen. Mit grep komme ich einfach nicht weiter.

Bitte bitte bitte, hat nicht jemand eine Idee?

Ciao, micbur
 
Benutzer-Profile anzeigen Private Nachricht senden

Alex.MH
Gast





BeitragVerfasst am: 15. Feb 2006 19:22   Titel:

Poste doch mal ein Beispielfile. Wie soll dir jemand helfen, ohne den Aufbau des Dateinamens und den Inhalt zu kennen.

Gruss,
Alex
 

petameta
prolinux-forum-admin


Anmeldungsdatum: 14.02.2003
Beiträge: 1294

BeitragVerfasst am: 15. Feb 2006 23:02   Titel:

Für solche Aufgaben ist awk wie geschaffen. Eine Beispieldatei würde in der Tat helfen. Auch kann ich Dir dazu das Buch "The AWK Programming Language" von Aho, Kernighan und Weinberger empfehlen, das ist ne echt gute Einführung.
 
Benutzer-Profile anzeigen Private Nachricht senden

micbur



Anmeldungsdatum: 05.06.2004
Beiträge: 86

BeitragVerfasst am: 16. Feb 2006 22:44   Titel:

Hallo,

nach so langer Funkstille, also einem Tag, muss ich mich melden. Hatte ne Menge jetzt um die Ohren.

Also so ein DNS-Eintrag bei uns sieht so aus, dass es eine Datei mit dem Domainnamen gibt. In dieser Datei sind die Aliase (oder Subdomains) enthalten. Das sieht zum Beispiel so aus:
Code:
www IN CNAME srv001

heißt, die Subdomaine 'www' wird auf den Server, den wir als 'src001' kennen umgeleitet. Was dann wieder srv001 in eine IP umwandelt, steht in einer anderen Zeile. Da wir aber nur zwei Dutzend Server haben und die Bezeichnung in den Dateien für identische Server immer dieselbe ist, macht mir das weniger Probleme.

Allerdings stehen in einer DNS-Datei mehrere Aliase (Subdomains), die dann auf verschiedene Server umgeleitet werden. Es kann also auch sein, das wir sowas haben wie:
Code:
www IN CNAME srv001
www2 IN CNAME srv100
www42 IN CNAME srv042


Mit meinen entwickelten RegExps komme ich nicht weiter. Ich habe auch schon einige versuche mit print hinter mir. Nutzt alles nix. Mein Wissen reicht nicht aus. Recherche brachte mich bisher auch nicht auf einen grünen Zweig und mit awk habe ich auch noch nie gearbeitet, sodass ich gerne eine zweite Meinung hören würde. Manchmal ist man ja so eingefahren in seinen Gedankengängen. Vielleicht hat ja jemand eine tolle Idee.

Ciao, micbur
 
Benutzer-Profile anzeigen Private Nachricht senden

petameta
prolinux-forum-admin


Anmeldungsdatum: 14.02.2003
Beiträge: 1294

BeitragVerfasst am: 17. Feb 2006 9:08   Titel:

Ich bin mir immer noch nicht 100%ig sicher, was Du machen möchtest. Wie schon gesagt eignet sich awk sehr gut für sowas, da es für die Verarbeitung von Textdateien erstellt wurde. Hier mal so eine kleine Einführung, damit Du eine Idee hast, wie's funktioniert und wo die Vorteile liegen:

awk zerlegt Zeilen einer Textdatei automatisch in Felder. Nehmen wir mal Dein Beispiel mit den 3 Zeilen mit www, www2 und www42, folgendes awk-Skript:

Code:
{ print $1 }


Gibt Dir folgendes aus:

Code:
www
www2
www42


Also immer das erste Feld. Entsprechend gibt Dir

Code:
{ print $4 }


das hier aus:

Code:
srv001
srv100
srv042


$0 würde Dir immer die gesammte Zeile liefern.

Das ließe sich sicherlich auch mit anderen Programmiersprachen machen, ist aber mit awk sehr schnell und einfach programmiert.

Du hast die Kommentarzeilen erwähnt. Ich setze mal voraus, daß das ; immer am Anfang der Zeile steht und zudem immer mindestens ein Leerzeichen nach dem ; folgt. Dann könnte man alle Kommentarzeilen wir folgt aussortieren:

Code:
{
  if ( $1 != ";") { Mache was sinnvolles }
}


Wenn diese Voraussetzungen nicht gegeben sind wird's komplizierter, awk bietet dafür aber in vollem Umfang Möglichkeiten wie if-Abfragen, sämtliche Schleifen-Varianten, Variablen, String-Funktionen usw. Das ist denke ich der Vorteil gegenüber RegExps, awk ist flexibler. Mit RegExps muß man sich irgendwann ganz schön verrenken wenn's kompliziert wird. Nebenbei: Wenn man's trotzdem braucht versteht awk auch RegExps.

Den Namen der Datei, die ja der Domain entspricht, bekommst als Kommandozeilenparameter übergeben. Dies funktioniert wie in C mit ARGC und ARGV[i], ARGV[1] ist also der Name der Datei.

Der Nachteil ist, daß es keine wirklich guten Tutorials im Netz gibt, deswegen habe ich Dir das Buch empfohlen. Leider ist es nicht ganz billig, gibt aber in zwei kurzen Kapiteln eine gute, leicht verständliche und schnelle Einführung.
 
Benutzer-Profile anzeigen Private Nachricht senden

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Sonstiges Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy