aus datei auslesen [awk]

T

tini1208

Jungspund
hallo forum,

ich schlage mich seit einiger zeit mit awk rum.
folgendes problem habe ich:

ich habe eine sehr grosse datei, aus welcher ich bestimmt zeilen extrahieren möchte. der teil sieht folgender massen aus:

i_ElvuseFlg = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1

das ganze soll in dann so aussehen:

i_ELvuseFlg
1
1
1
1
1
1
1
etc...

ich habe keine ahnung, wie ich das schreiben soll....mit spalten auslesen hab ich kein problem...aber wie kriege ich das in das format?

vielleicht kann mir jemand helfen?!

grüße

tini1208
 
irgendwas in der art?
Code:
awk -F '=' '/^i_ElvuseFlg/{gsub(" ","\n",$2); print $1 $2; getline; gsub(" ","\n",$0); print; getline; gsub(" ","\n",$0); print}'
 
sorry...aber das funktioniert nicht....
gibt es noch was anderes...vielleicht leicher nachvollziehbares...habe das andere jetzt gerade so gar nicht verstanden.
 
was funktioniert denn nicht?
wie schaut der teil den du ausgeben möchtest genau aus?
 
Bin zwar nicht so versiert in awk, aber vielleicht tuts auch folgendes

Code:
awk '/^i_ElvuseFlg/' file | sed 's/ =//' | tr " " "\n"
 
@ ninguno: wenn ich die zeile so eingebe, dann findet er da nen fehler. da ich leider nicht verstehe, was du da zusammengeschrieben hast, kann ich auch nicht drinrumwühlen....d.h. den befehl verändern.
im grunde habe ich alles in meinen ersten post geschrieben...dies ist ein teil aus dem originalfile....da sind halt noch mehr parameter drin (die ähnliches format haben), aber ich will nur diesen extrahieren....

@Xanti: das output file ist leer....aber keine fehlermeldung.
 
Du musst uns schon die Fehlermeldung posten. Des weiteren schreibst Du etwas von einem output file. Wüsste nicht, dass mein Beispiel eins anlegt. Gib uns mal ein paar mehr Infos zu Deinem zu parsenden File. Wie sind die Parameter getrennt (Tab, Space, ...)?
 
die fehlermeldung bei dem von ninguno erstellten skript war ein einfacher sythax fehler. mehr nicht.
ich habe auch den verweis zu einem output file gemacht (> output)...doch dieses war dann leer.

die zeile nach i_ElvuseFlg und die darunter gehören eigentlich zusammen...also 15 werte
die somit 2. zeile hat 20 werte und die letzte 5...alles 0en und 1en, welche durch tabs getrennt sind.
eingebettet ist dieser parameter in weitere i_lon oder i_lat etc., die aber so gar nicht von interesse sind. ich würde ja ein file mitschicken, doch leider ist es ca. 200mb groß.
hab ich noch was vergessen? falls noch fragen sein sollten...bin ich gern versucht, diese nach bestem wissen zu beantworten.

viele grüße
 
Versuch mal bitte folgendes:

Code:
grep -A2 "i_ElvuseFlg" file | sed 's/ =//' | tr "\t" "\n"
 
diese fehlermeldung kam:

grep: illegal option -- A
grep: illegal option -- 2
Usage: grep -hblcnsviw pattern file . . .

hab bei file mein input eingesetzt und dann am ende wieder ein > output angehangen. war das richtig?

viele grüße
 
tini1208 schrieb:
diese fehlermeldung kam:

grep: illegal option -- A
grep: illegal option -- 2
Usage: grep -hblcnsviw pattern file . . .

...hmm, zu altes grep wahrscheinlich.

tini1208 schrieb:
hab bei file mein input eingesetzt und dann am ende wieder ein > output angehangen. war das richtig?

Ja. Probier mal folgendes:

Code:
perl -ne '$b=3 if /i_ElvuseFlg/; if ($b-->0) {s/ =//g; tr/\t /\n/; print}' file
 
o.k.....das läuft. dann aber noch was zum output....die zeilen sind durch zwei leerzeilen getrennt...also so:
1


1


1


....

kann man da noch was machen?

viele grüße und schon mal danke!!!!!!!
 
Code:
perl -ne '$b=3 if /i_ElvuseFlg/; if ($b-->0) {tr/=//d; s/[\s\t]+/\n/g; print}' file

Gruss, Xanti
 
Zuletzt bearbeitet:

Ähnliche Themen

Zeilen behalten, die Werte in einem bestimmten Bereich enthalten

Keine grafische Oberfläche (Debian Installation)

Spalten einer Datei in neue Datei integrieren.

Dateien auslesen und Daten systematisch angeordnet in Datei ausgeben

Prblem mit zeilenweises auslesen von Datei und schreiben nach mysql

Zurück
Oben