PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : String zerlegen und formatieren



psy
24.10.11, 11:00
Moin,

ich habe eine Textdatei mit folgendem Schema:


var xyz=[{co:"FIRMA1",ceid:"101"},{co:"FIRMA2",ceid:"102"},{co:"FIRMA3",ceid:"103"}, usw.Der ganze Kram ist ein aneinander hängender String.
Wie kann ich den jetzt aufdröseln, damit ich folgenden Output bekomme:


FIRMA1, 101
FIRMA2, 102
FIRMA3, 103
usw.Jemand ne Idee?

Ciao.

Aqualung
24.10.11, 11:54
Verrätst Du uns noch, in welcher (Script-)Sprache Du das brauchst?

psy
24.10.11, 11:57
In gar keiner, die Quelldatei ist Javascript, aber da ist sonst kein weiterer Code drin, nur das was oben steht.
Der output soll Plaintext sein.

Edit:
Ah... Bash Script idealerweise, ich nehme aber auch Python, Ruby, Perl usw. ;)

ThorstenHirsch
24.10.11, 12:06
Das ist doch JSON! Also der Königsweg wäre dann natürlich ein JSON-Parser (gibt's für Python, Ruby, Perl usw. ;)).

Aqualung
24.10.11, 12:11
cat tmp.xyz | tr "\"" "\n" | grep -v var | while read l; do echo "$l" | grep -q FIRMA && echo -n "$l, "; echo "$l" | grep -q ^[0-9][0-9[0-9] && echo "$l" ; done

psy
24.10.11, 12:16
Schon mal cool, aber "FIRMA1" usw. sind natürlich irgendwelche Firmennamen, ein grep auf FIRMA geht in dem Fall leider nicht.

Also:


var xyz=[{co:"super company ltd",ceid:"101"},{co:"bla bla gmbh",ceid:"102"},{co:"microsoft gmbh",ceid:"103"}, usw.

Aqualung
24.10.11, 12:26
Zeilen zählen ...


cat tmp.xyz | tr "\"" "\n" | grep -v var | while read l; do a=$((++n%4)); test $a -eq 1 && echo -n "$l, "; test $a -eq 3 && echo "$l" ; done

psy
24.10.11, 12:26
Ich habs.


grep -q FIRMA

durch


grep -q ^[a-z]

ersetzen.

Vielen Dank!