Pro-Linux.de

Pro-Linux

Pro-Linux Diskussions- und Hilfeforum
Aktuelle Zeit: 18. Nov 2018 2:19

Alle Zeiten sind UTC+01:00




Ein neues Thema erstellen  Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Textdateien in Massen auslesen
BeitragVerfasst: 15. Feb 2006 19:14 
Offline

Registriert: 05. Jun 2004 15:55
Beiträge: 86
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


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 15. Feb 2006 19:22 
Poste doch mal ein Beispielfile. Wie soll dir jemand helfen, ohne den Aufbau des Dateinamens und den Inhalt zu kennen.

Gruss,
Alex


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 15. Feb 2006 23:02 
Offline
prolinux-forum-admin

Registriert: 14. Feb 2003 13:19
Beiträge: 1294
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.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 16. Feb 2006 22:44 
Offline

Registriert: 05. Jun 2004 15:55
Beiträge: 86
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


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 17. Feb 2006 9:08 
Offline
prolinux-forum-admin

Registriert: 14. Feb 2003 13:19
Beiträge: 1294
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, 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.


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 5 Beiträge ] 

Alle Zeiten sind UTC+01:00


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.
Sie dürfen keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Limited
Deutsche Übersetzung durch phpBB.de