Befehl ausführen mit Editor

Jan88

Jan88

Routinier
Hallo,

ich benutze oft Gedit um meine html dateien zu schreiben. Dort brauche ich oft den Befehl um die Umlaute zu ändern. also aus "ä" "ä" zu machen.
Wie kann cih diesen Befehl in eine datei auslagern und über die Funktion "Befehl ausführen" ausführen lassen?
Es sollen dabei aber auch die ganzen anderen Sonderzeichen ersetz werden. Also auch ü, ö, ß und so weiter.

Wie muss solch eine Datei aussehen?

Gruß
Jan
 
Du könntest sed nutzen:

Code:
sed -i -e 's/ä/ä/g' -e 's/ö/ö/g' -e 's/ü/ü/g' -e ... file.html

Man kann die Substitutionen auch in ein File "subst" schreiben und "sed -i -f subst file.html" aufrufen.

Gruss, Xanti

edit: Schreibfehler korrigiert.
 
Zuletzt bearbeitet:
Ich würde gerne eine datei erstellen, die ich mit der Funktion Befehl ausführen bei Gedit ausführen kann und die mir die Zeichen ERSETZT und nicht anfügt. Bei dem von dir werden die umlaute nicht ersetzt, sondern einfach der neue Zeichensatz hinten angehängt.

Ich möchte also ein Dokument geöffnet haben und dann nicht mit der befrehlszeile, sondern mit Gedit arbeiten. Ich benutze dann:
Werkzeuge -> Befehl ausführen -> Datei auswählen
um die Umlaute zu ändern. Die Änderung soll sich in der Datei vollziehen.

Wenn das nicht geht, kann ich auch mit der konsole arbeiten. Aber auch da würde ich gerne eine datei haben die ich aufrufe und die mir dann die datei "file.html" ändert und wieder abspeichert.

Jan
 
gedit nutze ich nicht, deswegen kann ich da keine Tipps geben. Nichtsdestotrotz sollte mein Befehl, in der Konsole aufgerufen, das tun, was Du willst.

Hast Du vielleicht den -i-Schalter vergessen? Der bewirkt nämlich, dass sofort im File geändert wird. Oder ist Dein sed vielleicht zu alt?

edit: Sorry, hatte in meinem obigen Befehl 'nen Fehler, jetzt müsste er richtig sein.
 
Zuletzt bearbeitet:
Ja genau, diese Funktion, aber halt für die 7 Sonderzeichen gleichzeitig.
Ä => Ä
ä => ä
Ü => Ü
ü => ü
Ö => Ö
ö => ö
ß => ß

Und das halt in eine datei ausgelagert
 
Ich hatte in meinem obigen Befehl 'nen Dreher, jetzt müsste er aber richtig funktionieren. Mea culpa :brav:

Gruss, Xanti
 
Leider nein.

Meine Datei vorher:
<h1>Arbeitsgemeinschaften im Schuljahr 2005/2006</h1>
<ul>
<li>Model United Nations</li>
<li>Aus früheren Jahren</li>
<li>Jazz-Combo</li>
<li>Computer: Javascript</li>
<li>Computer: AG-Unter- u. Mittelstufe</li>
</ul>
Meine Eingabe in die Konsole
malte@dhcppc4:/srv/www/htdocs/old_content> sed ag.html -i -e 's/ä/&auml;/g' -e 's/ö/&ouml;/g' -e 's/ü/&uuml;/g' -e ag.html
Die Datei danach:
<h1>Arbeitsgemeinschaften im Schuljahr 2005/2006</h1>
g.html
<ul>
g.html
<li>Model United Nations</li>
g.html
<li>Aus frü&uuml;heren Jahren</li>
g.html
<li>Jazz-Combo</li>
g.html
<li>Computer: Javascript</li>
g.html
<li>Computer: AG-Unter- u. Mittelstufe</li>
g.html
</ul>
 
Stimmt. Ich sollte die Befehle doch vorher testen. ;)

Probier mal folgendes:

Code:
sed -i -e 's/ä/\&auml\;/g; s/ö/\&ouml\;/g; s/ü/\&uuml\;/g' ag.html

Gruss, Xanti
 
Ich wuerde an deiner Stelle einfach den obigen Befehl richtig abtippen. :) Die Datei wird zum Schluss angegeben.
 
Xanti schrieb:
Stimmt. Ich sollte die Befehle doch vorher testen. ;)

Probier mal folgendes:

Code:
sed -i -e 's/ä/\&auml\;/g; s/ö/\&ouml\;/g; s/ü/\&uuml\;/g' ag.html

Gruss, Xanti

Danke , der geht wunderbar. Wie kann ich den nun in eine Datei auslagern und dann aufrufen?
 
Code:
echo "sed -i -e 's/ä/\&auml\;/g; s/ö/\&ouml\;/g; s/ü/\&uuml\;/g' ag.html" >> meinskript.sh
chmod +x meinskript.sh
Und du hast ein ausfuehrbares Skript. Kannst auch noch 'ag.html' durch '$1' austauschen, dann kannst du das Skript in Zukunft mit
Code:
meinskript.sh <dateiname>
aufrufen.
 
Hmm, das geht leider irgendwie nicht so ganz.
Wenn ich
sed -i -e 's/ä/\&auml\;/g; s/ß/\&szlig\;/g; s/Ä/\&Auml\;/g; s/ü/\&uuml\;/g; s/Ü/\&Uuml\;/g; s/ö/\&ouml\;/g; s/Ö/\&Ouml\;/g;' ag.html
in die Konsole eingeb hab ich das gewünschte ergebins.
Wenn ich das jetzt in eine datei schreibe und sie ausführbar mach und ausführe geht es nicht.
Woran kann das liegen? es ist beidesmal der SELBE Code.

malte@dhcppc4:/srv/www/htdocs/old_content> echo "sed -i -e 's/ä/\&auml\;/g; s/ß/\&szlig\;/g; s/Ä/\&Auml\;/g; s/ü/\&uuml\;/g; s/Ü/\&Uuml\;/g; s/ö/\&ouml\;/g; s/Ö/\&Ouml\;/g;' ag.html" >> meinskript.sh
malte@dhcppc4:/srv/www/htdocs/old_content> chmod +x meinskript.sh
malte@dhcppc4:/srv/www/htdocs/old_content> meinskript.sh
bash: meinskript.sh: command not found
malte@dhcppc4:/srv/www/htdocs/old_content>
Geht NICHT
sed -i -e 's/ä/\&auml\;/g; s/ß/\&szlig\;/g; s/Ä/\&Auml\;/g; s/ü/\&uuml\;/g; s/Ü/\&Uuml\;/g; s/ö/\&ouml\;/g; s/Ö/\&Ouml\;/g;' ag.html
in der konsole geht einwandfrei !
 
Zuletzt bearbeitet:
Welcher Fehler kommt?

edit: Wahrscheinlich ist . nicht im Pfad, was auch gut so ist. Ruf das Shellskript mit entsprechendem Pfad auf, also zum Beispiel

Code:
./meinskript.sh

wenn es im gleichen Verzeichnis liegt, in dem Du Dich befindest.
 
Zuletzt bearbeitet:
Hmm, seltsam. Trag mal 'ne Shebang ein, also als erste Zeile Deines Skriptes sollte

Code:
#!/bin/sh

stehen.

edit: Was für ein System hast Du?
 
Xanti schrieb:
Hmm, seltsam. Trag mal 'ne Shebang ein, also als erste Zeile Deines Skriptes sollte
Code:
#!/bin/sh
stehen.
Ja, damit geht es.
Xanti schrieb:
edit: Was für ein System hast Du?
Falls du es immernoch wissen willst:
SuSe 10.0 KDE 3.4

Falls du noch Geduld hast.
Wie kann ich dies Skript für alle Dateien in einem bestimmten Verzeichniss ausführen?
 
Zuletzt bearbeitet:
Code:
for i in dir/*.html; do ./meinskript.sh $i; done

Dabei wird vorausgesetzt, dass die Filenamen keine Leerzeichen enthalten.

Gruss, Xanti
 

Ähnliche Themen

Runlevel Editor

Problem mit str_replace

Server-Monitoring mit RRDTool

[HowTo] TeamSpeak 2 - RC2 - Server (Deutsch/Englisch)

Zurück
Oben