Hallo,
Ich sitze an einem Makefile für ein kleines Übersetzungsprojekt. Gegen sind XML-Dateien, die mittels xml2po aus den gnome-doc-utils übersetzt werden sollen. Dabei existiert nur ein Unterverzeichnis, was alle Übersetzungen enthält. Die Dateien heißen also
xyz.de.po
Nun macht xml2po beim Rückformatieren in XML den Fehler, dass der Dateiname in lang="" eingesetzt wird. Im Prinzip steht dann in jeder übersetzten XML Datei:
<book id="xyz-guide" lang="yxz-guide.de">
Das wollte ich das gerne mit sed korrigieren, so dass ich
<book id="xyz-guide" lang="de">
erhalte. Der betreffende Ausschnitt aus dem Makefile (die Tabs sind hier durch Leerzeichen ersetzt wurden):
translate: for guide in $(GUIDES); do \ for lang in $(LANG); do \ $(XML2PO) -e -p $${guide}.$${lang}.po \ -o ../$${guide}_$${lang}.tmp ../$${guide}.$(XMLSUFFIX) ; \ sed -e 's!$${guide}.$${lang}!$${lang}!' \ < ../$${guide}_$${lang}.tmp \ > ../$${guide}_$${lang}.$(XMLSUFFIX) ; \ rm ../$${guide}_$${lang}.tmp ; \ done ; \ done
Wichtig sind die drei Zeilen ab 'sed ...'. Wieso ersetzt mir sed nicht den betreffenden Ausdruck? Zugegeben bin ich nicht der große Könner auf der Konsole. Ein Verweis auf ein Schriftstück, dass meinen Fehler aufklärt, wäre schon hilfreich.
MfG Daniel
¡Hola!
Am Donnerstag, 10. Februar 2005 00:43 schrieb Daniel Leidert:
gnome-doc-utils
bäh :)
sed -e 's!$${guide}.$${lang}!$${lang}!' \
student@bizarre:~$ foo=bar student@bizarre:~$ echo '${foo}' ${foo} student@bizarre:~$ echo "${foo}" bar
Der sed weiß also gar nicht, was er zu tun hat, wenn die Variablen nicht von der Shell dereferenziert werden.
Josef
Josef Spillner schrieb:
Am Donnerstag, 10. Februar 2005 00:43 schrieb Daniel Leidert:
gnome-doc-utils
bäh :)
Ich brauche xml2po. Kennst du Alternativen?
sed -e 's!$${guide}.$${lang}!$${lang}!' \
student@bizarre:~$ foo=bar student@bizarre:~$ echo '${foo}' ${foo} student@bizarre:~$ echo "${foo}" bar
Der sed weiß also gar nicht, was er zu tun hat, wenn die Variablen nicht von der Shell dereferenziert werden.
So etwas dachte ich mir schon. Wie bekomme ich aber das Dereferenzieren hin? Wie schon gesagt, ich habe davon nicht sehr viel Ahnung. Google erzählt mir viel über C und ein wenig über Perl. Aber wie schaffe ich das in meinem Fall? Irgendwie stehe ich komplett auf dem Schlauch.
MfG Daniel
Daniel Leidert wrote:
Josef Spillner schrieb:
Am Donnerstag, 10. Februar 2005 00:43 schrieb Daniel Leidert:
gnome-doc-utils
bäh :)
Ich brauche xml2po. Kennst du Alternativen?
sed -e 's!$${guide}.$${lang}!$${lang}!' \
student@bizarre:~$ foo=bar student@bizarre:~$ echo '${foo}' ${foo} student@bizarre:~$ echo "${foo}" bar
Der sed weiß also gar nicht, was er zu tun hat, wenn die Variablen nicht von der Shell dereferenziert werden.
So etwas dachte ich mir schon. Wie bekomme ich aber das Dereferenzieren hin? Wie schon gesagt, ich habe davon nicht sehr viel Ahnung. Google erzählt mir viel über C und ein wenig über Perl. Aber wie schaffe ich das in meinem Fall? Irgendwie stehe ich komplett auf dem Schlauch.
Ich hoffe ich verstehe dein Problem richtig...
- In Strings in Hochkommas werden Variablen nicht expandiert. - In Strings in Anführungszeichen werden Variablen expandiert. - Und wenn dir das Escapen von bedeutungsvollen Zeichen in Strings in Anführungszeichen zu umständlich ist, dann klappt auch das: 'bla'${foo}'bla'
Wenn Googlen nicht hilft, dann muss man die einschlägigen Quellen befragen: http://www.tldp.org/LDP/abs/html/index.html
HTH, Stephan.
Stephan Maka schrieb:
[der Kürze halber den Vorspann zum Expandieren/Dereferenzieren von Variablen gesnippt]
Ich hoffe ich verstehe dein Problem richtig...
- In Strings in Hochkommas werden Variablen nicht expandiert.
- In Strings in Anführungszeichen werden Variablen expandiert.
Das war mein Problem, dass ich nun aber schon gelöst habe, nachdem ich mir Josefs Mails noch einmal genau durchgelesen habe. Nun scheinen die "verschwundenen" Mails and Liste ja langsam einzutrudeln. Danke noch einmal für die schnelle Hilfe und die Hinweise.
MfG Daniel
Am Donnerstag, den 10.02.2005, 00:50 +0100 schrieb Josef Spillner:
¡Hola!
Am Donnerstag, 10. Februar 2005 00:43 schrieb Daniel Leidert:
gnome-doc-utils
bäh :)
sed -e 's!$${guide}.$${lang}!$${lang}!' \
student@bizarre:~$ foo=bar student@bizarre:~$ echo '${foo}' ${foo} student@bizarre:~$ echo "${foo}" bar
Der sed weiß also gar nicht, was er zu tun hat, wenn die Variablen nicht von der Shell dereferenziert werden.
Ich hab es verstanden. O.k. Problem geklärt.
Danke und MfG Daniel
lug-dd@mailman.schlittermann.de