PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : awk-Skript soll OpenOffice-Daten konvertieren



error
29-04-2005, 13:48
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

lagalopex
30-04-2005, 18:19
schicks mal durch folgendes sed-kommando:

sed 's/^\([0-9.]*\) \([0-9.]*\)E-0*\([0-9]*\)$/\1 \& \2 \\cdot10\^{-\3}\\\\\n\\hline/g'

Hans-Georg Normann
01-05-2005, 10:49
Hi Error

das kommt davon, wenn Code nicht dokumentiert ist :confused: Ich versuche mal meinGlück
#!/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

peschmae
01-05-2005, 11:09
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ä

Hans-Georg Normann
01-05-2005, 12:00
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.

[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

Hans-Georg Normann
01-05-2005, 13:12
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