Anzeige:
Ergebnis 1 bis 6 von 6

Thema: awk-Skript soll OpenOffice-Daten konvertieren

  1. #1
    Registrierter Benutzer
    Registriert seit
    30.01.2004
    Beiträge
    10

    awk-Skript soll OpenOffice-Daten konvertieren

    Hallo

    Ich hab mir vor einiger Zeit mal ein awk-Skript geschrieben, um Daten von einer Open-Office-Tablle nach LaTeX-Code zu konvertieren.
    Das Skript sieht so aus:

    #!/bin/awk -f
    BEGIN {}
    {
    for (i=1;i<NF;i++) {
    printf $i" "
    printf "& "
    }
    printf $i+1
    print "\\\\"
    print "\\hline"
    }
    END{}

    ich weiss jetzt auch nicht mehr ganz 100%ig wie das funktioniert, aber ok. Aber wenn ich jetzt folgende Daten von OpenOffice habe:

    4 6.00E-012
    4.5 4.20E-011
    5 1.32E-010
    5.5 3.60E-010
    6 1.00E-009
    6.5 2.52E-009
    7 5.40E-009
    7.5 1.26E-008
    8 3.00E-008

    dann gibt mir das Skript folgendes aus:

    4 & 1\\
    \hline
    4.5 & 1\\
    \hline
    5 & 1\\
    \hline
    5.5 & 1\\
    \hline
    6 & 1\\
    \hline
    6.5 & 1\\
    \hline
    7 & 1\\
    \hline
    7.5 & 1\\
    \hline
    8 & 1\\
    \hline
    ich hätte aber gern:

    4 & 6 \cdot 10^{-12}\\
    \hline
    4.5 & 4.2 \cdot 10^{-11}\\
    \hline
    5 & 1.32 \cdot 10^{-10}\\
    \hline
    5.5 & 3.6 \cdot 10^{-10}\\
    \hline
    6 & 1 \cdot 10^{-9}\\
    \hline
    6.5 & 2.52 \cdot 10^{-9}\\
    \hline
    7 & 5.4 \cdot 10^{-9}\\
    \hline
    7.5 & 1.26 \cdot 10^{-8}\\
    \hline
    8 & 3 \cdot 10^{-8}\\
    \hline

    wie bekomm ich das hin. Also er sollte mir ja dann xE-y in x \cdot 10^{-y} umwandeln

    Danke schon mal für die Antworten

  2. #2
    Registrierter Benutzer
    Registriert seit
    19.02.2005
    Beiträge
    32
    schicks mal durch folgendes sed-kommando:
    Code:
    sed 's/^\([0-9.]*\) \([0-9.]*\)E-0*\([0-9]*\)$/\1 \& \2 \\cdot10\^{-\3}\\\\\n\\hline/g'

  3. #3
    Registrierter Benutzer Avatar von Hans-Georg Normann
    Registriert seit
    04.03.2000
    Ort
    Uetersen
    Beiträge
    571
    Hi Error

    das kommt davon, wenn Code nicht dokumentiert ist Ich versuche mal meinGlück
    Code:
    #!/bin/awk -f
    # Initialisierung, wird nur direkt nach dem Start durchlaufen
    BEGIN {}
    
    # Dieser Part wird auf jede Zeile des zu untersuchenden Dokumentes angewendet
    {
      # zerlegen der Zeilen in Wörter (Zellen)
      for (i=1;i<NF;i++) {
        printf("%s & " $i)
      }
      printf("%s\\\\\n\\hline\n" $(i+1))
    }
    # Abschlussarbeiten, wird unmittelbar vor Ende des AWK durchlaufen
    END{}
    Gleichzeitig habe ich den Code mal etwas aufgeräumt (mit printf kann man ja ne ganze Menge vereinfachen).

    Jetzt würde ich gerne die Probe auf's Example machen, aber irgendwie kann ich die Tablle (.sxc) nicht lesen. Gibt es da ein kleines dunkeles Geheimnis, was ich nicht kenne?

    Hans
    Geändert von Hans-Georg Normann (01-05-2005 um 11:31 Uhr)
    333 Mhz, 466 MHz, neee, ich hab was neues zuhause.....

  4. #4
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Das sind alles zip-Dateien. Die musst du erst entzippen und dann dort rumgucken um an den Inhalt der in irgend so einer XML-Datei ist ranzukommen.

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  5. #5
    Registrierter Benutzer Avatar von Hans-Georg Normann
    Registriert seit
    04.03.2000
    Ort
    Uetersen
    Beiträge
    571
    Hmm, da sind ja ganz viele Dateien und die sehen nicht gerade so aus, dass das Script von Error annähernd das gewünschte Ergebnis liefert. Ich vermute, da war noch ein anderes Fileformat im Spiel.
    Code:
    [hans@rosi tmp]$ unzip abc_test.sxc
    Archive:  abc_test.sxc
     extracting: mimetype
      inflating: content.xml
      inflating: styles.xml
     extracting: meta.xml
      inflating: settings.xml
      inflating: META-INF/manifest.xml
    Hans
    Geändert von Hans-Georg Normann (01-05-2005 um 12:07 Uhr)
    333 Mhz, 466 MHz, neee, ich hab was neues zuhause.....

  6. #6
    Registrierter Benutzer Avatar von Hans-Georg Normann
    Registriert seit
    04.03.2000
    Ort
    Uetersen
    Beiträge
    571
    Habe mal gerade die content.xml auseinander genommen. Wes dürfte wohl mit awk gehen, ich glaube aber, dass das mit einem Script innerhalb OO besser zu lösen ist.

    Hans
    333 Mhz, 466 MHz, neee, ich hab was neues zuhause.....

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •