PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Daten aus txt-datei verarbeiten



jacky0815
26-12-2002, 15:04
Hallo,

leider kenn ich mich nicht so mit shellscripten aus, hoffe ihr könnt mir zumindest beim ersten teil meines Problems helfen.

Folgende Situation.

Ich habe eine Textdatei die folgendermaßen aufgebaut ist:

xx.12.2002
192.168.xxx.xx | 51.6078 | 21229.4470 | 19.12.2002
192.158.xxx.xxx | 6435.0301 | 120.4214 | 19.12.2002

Sprich erst die IP, dann ein trennzeichen, dann der upload | donwload.

Nun will ich hier zum einen alle IPs filtern, die entweder über 400.0000 up oder donwload haben. Diese in eine neue datei schreiben.
Die über 1000.0000 haben sollen in eine extra datei. Dort muss ich dann die Ip auslesen und host ip machen.

Wie stelle ich das am dümmsten an? Ich weiß zwar das ich mit grep xxx nach zeichenfolgen suchen kann, auch dass ich mit cut -c nur bestimmte spalten ausgeben kann, aber das nützt mir nicht viel.

Vielen Danke schonmal

anda_skoa
26-12-2002, 16:59
Eine Idee wäre, die Reihenfolge der Spalten zu ändern.

Also mit cut oder awk eine neue Datei erzeugen, in der der Upload ganz vorne steht.
Dann könnte man sortieren und danach eventuell leichter weiter arbeiten.

Ciao,
_

jacky0815
26-12-2002, 18:17
Also ich habe es soweit, dass ich alle rausgefiltert habe, die ich nicht bearbeiten will. Nun suche ich krampfhaft nach einer möglichkeit ein stück von einer zeile die zwischen 2 zeichen steht rauszufiltern. z.B. die IP geht von anfang bis | (Trennzeichen) oder der download von | bis |.

Wie bekomme ich nur genau diese Zeichen?

Badsteve
26-12-2002, 19:13
das get mit awk -F '|' '{print $1}'

jacky0815
26-12-2002, 21:25
Hallo, ich brauch nochmal euere Hilfe. Vielen Dank bis hier hin. Hat mir schon sehr geholfen.

Ich will mit desem Befehl die IP ausfösen. Nur macht er das nicht.
Wenn ich "host" und die hochkommata weglasse, bringt er mit die IP. Wie bekomme ich "host" nun dazu diese IP aufzulösen?

Hier der Befehl:
host 'cat /tmp/test.dld | head -$zeile | tail -1 | awk -F '|' '{print $1}' '

Danke schonmal

Jasper
27-12-2002, 00:08
Original geschrieben von jacky0815
Hallo, ich brauch nochmal euere Hilfe. Vielen Dank bis hier hin. Hat mir schon sehr geholfen.

Ich will mit desem Befehl die IP ausfösen. Nur macht er das nicht.
Wenn ich "host" und die hochkommata weglasse, bringt er mit die IP. Wie bekomme ich "host" nun dazu diese IP aufzulösen?

Hier der Befehl:
host 'cat /tmp/test.dld | head -$zeile | tail -1 | awk -F '|' '{print $1}' '


vereinfache das ganze und korregiere es so:

host $(awk -v zeile=$zeile -F '|' '{ if( NR==zeile ) print $1 }' /tmp/test.dld )

die environment-variable $zeile muss natürlich gesetzt sein

-j