Hallo Forum,
nach langem Probieren man- und Such-Seiten lesen komm ich nicht weiter und weiß nicht woran es liegt.
Problem:
1 | sed '#suchstring#s#anderer_suchstring#ersetzung#g' textdatei |
geht nicht (es kommt keine Fehlermeldung aber auch keine Aktion, in der Textdatei finden sich keine Änderungen)
Der suchstring existiert, denn folgendes geht:
1 | grep suchstring textdatei | sed 's#anderer_suchstring#ersetzung#g' |
Auch das Wechseln der Trennzeichen oder der einfachen in doppelte Anführungszeichen bringt nix. Der Suchstring beinhaltet keine Sonderzeichen oder Ähnliches.
Die eigentliche Aufgabe:
In einem Verzeichnis liegen an die 1000 konvertierte Dateien (das Konvertierungstool kann nicht rekursiv arbeiten) die über das gesamte lokale Dateisystem verteilt waren.
Es gibt eine Textdatei in der die absoluten Pfade (mit den Dateinamen) zu den unkonvertierten Dateien stehen (Pfadliste) und eine Datei mit den Dateinamen der konvertierten Dateien (Dateiliste). Die Dateien besitzen unterschiedliche Endungen aber der Name vor dem Punkt ist gleich.
Idee:
suche in der Pfadliste die Zeile mit einer Übereinstimmung aus der Dateiliste (Endungen abgeschnitten)(die Dateiliste hat keine Dopplungen)
ergänze den Zeilenanfang mit
cp ./Dateinamen.Endung und Leerzeichen
und am Zeilenende tausche die Endung von abc zu ftg und das alles in eine neue Textdatei2 schreiben
Ergebnis ist eine Textdatei2 mit Zeilen in dieser Form:
1 | cp ./konvertierte.Datei /alte/Pfad/angabe/konvertierte.Datei |
dann kann die Textdatei2 als script abgearbeitet werden
Warum geht die Zeile sed '#suchstring#s#anderer_suchstring#ersetzung#g'
nicht?
Ich bedanke mich schon mal für eure Mühen.
Petra
Bearbeitet von sebix:
Forensyntax und Groß-/Kleinschreibung eingefügt. Bitte verwende in Zukunft Codeblöcke, um die Übersicht im Forum zu verbessern!