Zum Inhalt springen

Suchen und Ersetzen in XML-File


h3llraid3r

Empfohlene Beiträge

Hallöchen,

ich habe hier ein kleines Problem, wo ich nicht direkt weiter komme...

Daher folgende Situation:

Es existiert ein XML-File mit diversen Zeilen, dort kommen jedoch auch Zahlen in Exponential-Form vor (z.B. 1.069666e+02), die durch <v> und </v>-Tags umschlossen werden.

Da ich diese Form nicht gebrauchen kann, müssen alle Zahlen in ein numerisches Format konvertiert werden.

Mein bisheriger Ansatz:


## gesuchte Felder anhand der Tags auswählen

cut -d "<" -f5 file.xml | cut -d ">" -f2 

## Leerzeilen löschen

| grep -v '^$'

## Zahlen in Integer umwandeln und ausgeben

|awk '{printf("%.3i \n",$1)}'

Und hier stecke ich dann momentan fest. Er gibt mir natürlich die richtigen Werte aus, diese müssen ja aber auch irgendwie wieder in die XML-Datei rein (file2.xml, wie auch immer). Hatte es schon mit sed versucht, aber wenn ich diesem als Suchmuster

cut -d "<" -f5 file.xml | cut -d ">" -f2 |grep -v '^$'

und als Ersetzungswert

awk '{printf("%.3i \n",$1)}'

übergebe, kann er damit nicht umgehen, da er die Befehlsfolge nicht zu erkennen scheint.

Kann mir da jemand auf die Sprünge helfen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

hab ich richtig verstanden, dass du ein "substitute" für awk suchst?

Schau mal die Funktion "sub" an -

awk/Reguläre Ausdrücke ? Mikiwiki .

Ich benutze für sowas auch keine shell mehr, da es ab einem gewissen grad zu kompliziert wird oder an Grenzen stösst. Und Perl ist auch auf jedem Unix/Linux drauf - daher ist das my language of choice.

ciao,

vic

Link zu diesem Kommentar
Auf anderen Seiten teilen

hi,

danke dir - awk benutze ich auch so schon teilweise.

Da mir die Zusammenbauerei des awk zu kompliziert und aufwändig war, habe ich einen anderen Weg gesucht und siehe da... Das Reporting-Tool was ich nutze kann nicht nur XML-Files als Source nehmen sondern auch csv-Dateien.

Die csv-Datei war dann recht schnell zusammengebaut...

Ein awk mit einem printf (Für die Werte) und einem print strftime (für die Umwandlung zw. Exponential-Darstellung und Normaldarstellung).

Trotzdem danke für die Rückmeldung :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...