Bash: suchen und ersetzen
Hallo zusammen
Möchte aus einer riesigen HTML Datei folgenden Strings ersetzen: ^M\
Nun habe ich dieses kleine Script erstellt, wobei ich die Strings mit einem a oder am besten wäre mit gar keinem Zeichen zu ersetzen
Nur passiert leider rein gar nichts... nicht einmal eine Fehlermeldung.
Ich versuchte auch schon im sed Befehl anstatt die Pipe | ein normales Slash Zeichen.
Was mache ich falsch?
Möchte aus einer riesigen HTML Datei folgenden Strings ersetzen: ^M\
Nun habe ich dieses kleine Script erstellt, wobei ich die Strings mit einem a oder am besten wäre mit gar keinem Zeichen zu ersetzen
#!/bin/bash
string=^M\
newstring=a
echo "sed 's|$string|$newstring|'"
sed 's|$string|$newstring|'
Ich versuchte auch schon im sed Befehl anstatt die Pipe | ein normales Slash Zeichen.
Was mache ich falsch?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 228903
Url: https://administrator.de/contentid/228903
Ausgedruckt am: 26.11.2024 um 08:11 Uhr
14 Kommentare
Neuester Kommentar
hi SIP SIP
In-Place-Editing[Bearbeiten]
Aufgrund der Art wie sed Textmanipulationen durchführt, kann dies nicht direkt auf der Eingabedatei geschehen. Als Ausgabe wird eine von dieser getrennte Datei benötigt, die gegebenenfalls danach über die Eingangsdatei kopiert wird.
sed '...<Anweisungen>...' /path/to/inputfile > /path/to/output
In-Place-Editing[Bearbeiten]
Aufgrund der Art wie sed Textmanipulationen durchführt, kann dies nicht direkt auf der Eingabedatei geschehen. Als Ausgabe wird eine von dieser getrennte Datei benötigt, die gegebenenfalls danach über die Eingangsdatei kopiert wird.
sed '...<Anweisungen>...' /path/to/inputfile > /path/to/output
wenn Du einen backslash ersetzen willst, mußt Du den "escapen" und ^ hat eine Sonderbedeutung in regulären Ausdrücken.
echo "abcde^m\blabala" | sed -e "s:\^m\\\:a:g"
lks
Bei mir kommt folgendes raus:
wobei testdatei.xt Deine obige datei ist, per copy und paste aus dem quelltext in eine datei gepackt.
lks
lks@roku:~$ cat tmp/testdatei.txt | sed -e "s:\^M\\\:a:g"
an class="Section1"><span class="Haupttitel">blabla<br /></span><br />blabla</span></p>a
<p><span class="Section1"><br /><a href="link">1. </a><a href="index.php?
<p><span class="Section1"><br /></span></p>a
<p><span class="Ueberschrift">titel</span></p>a
<p><span class="Section1"><br /></span></p>a
<p class="Haupttext"> </p>a
<p class="Haupttext">blabla</p>a
<p class="Haupttext"> </p>a
<p class="Haupttext">text</p>a
<p class="Haupttext"> </p>a
<p><span class="Section1"><span class="Haupttext">titel</span><br /></span></p>
<p class="Ueberschrift"> </p>a
wobei testdatei.xt Deine obige datei ist, per copy und paste aus dem quelltext in eine datei gepackt.
lks
Irgendetwas machst du falsch:
lks@roku:~$ cat tmp/testdatei.txt
an class="Section1"><span class="Haupttitel">blabla<br /></span><br />blabla</span></p>^M\
<p><span class="Section1"><br /><a href="link">1. </a><a href="index.php?
<p><span class="Section1"><br /></span></p>^M\
<p><span class="Ueberschrift">titel</span></p>^M\
<p><span class="Section1"><br /></span></p>^M\
<p class="Haupttext"> </p>^M\
<p class="Haupttext">blabla</p>^M\
<p class="Haupttext"> </p>^M\
<p class="Haupttext">text</p>^M\
<p class="Haupttext"> </p>^M\
<p><span class="Section1"><span class="Haupttext">titel</span><br /></span></p>
<p class="Ueberschrift"> </p>^M\
lks@roku:~$ cat tmp/testsed.sh
#!/bin/bash
sed -e "s:\^M\\\:a:g"
lks@roku:~$ cat tmp/testdatei.txt | tmp/testsed.sh
an class="Section1"><span class="Haupttitel">blabla<br /></span><br />blabla</span></p>a
<p><span class="Section1"><br /><a href="link">1. </a><a href="index.php?
<p><span class="Section1"><br /></span></p>a
<p><span class="Ueberschrift">titel</span></p>a
<p><span class="Section1"><br /></span></p>a
<p class="Haupttext"> </p>a
<p class="Haupttext">blabla</p>a
<p class="Haupttext"> </p>a
<p class="Haupttext">text</p>a
<p class="Haupttext"> </p>a
<p><span class="Section1"><span class="Haupttext">titel</span><br /></span></p>
<p class="Ueberschrift"> </p>a
Nimm mal einfach meine Dateien oben per copy und paste und versuche es damit.
Vielleicht sind in deinen dateien noch zusätzliche zeichen, die irgendwie querschießen.
sobald ich den Grund dafür gefunden habe melde ich mich nochmal.
Wäre interessant zu wissen, was bei dir anders ist.
Danke für deine Hilfe
Gern geschehen.
lks
Lies mal meinen Kommentar da habe ich dir es geschrieben das du in eine die Eingabe und das Ergebnis in andere Datei schreiben mußt.
Servus
Probiere mal deine dinge in eine Neue Datei zu schreiben
echo „VARIABLE“ > deinedatei.txt
Wenn ich es richtig sehe liest du die Datei und willst dann in die identische Datei wieder schreiben.
Könnte das Problem sein.
Kann sein da du die vorher zum lesen öffnest das du diese erst schliessen und zum Schreiben neu aufmachen mußt
Dann geht die aber denke ich der Inhalt flöten.
Gruß
Probiere mal deine dinge in eine Neue Datei zu schreiben
echo „VARIABLE“ > deinedatei.txt
Wenn ich es richtig sehe liest du die Datei und willst dann in die identische Datei wieder schreiben.
Könnte das Problem sein.
Kann sein da du die vorher zum lesen öffnest das du diese erst schliessen und zum Schreiben neu aufmachen mußt
Dann geht die aber denke ich der Inhalt flöten.
Gruß