
Hallo Liste, ich muss aus einer Textdatei die ersten 3 Zeilen, und danach alle Zeilen die mit "<" beginnen, entfernen und dabei gleich auf eine neue Datei schreiben. Ich denke, sed ist dafür das Mittel der Wahl, oder? Habe aber noch nie irgend etwas mit sed gemacht ... Jetzt habe ich die man und info Seiten von sed gelesen und bin beeindruckt was man damit alles tun könnte. Aber irgendwie fehlt mir noch immer der "Anfang" Meine Vermutung lautet mal: sed -e script < Alt.txt > Neu.txt Richtig? Und was schreibe ich in das script ? grüße, Norbert -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org

Am 18.05.2012 16:08, schrieb Norbert Zawodsky:
sed -e '1,3d' -e '/^</d' Alt.txt > Neu.txt si -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org

Am 18.05.2012 16:16, schrieb Susan Ivanova:
Hi, naja, Du kannst Dir sed wie einen Editor, z.B. vi vorstellen, nur halt ohne Tastatureingaben, stattdessen scripte. Im script zuerst mal das Kommando, "s" für Ersetzen ist sicher das meistgenutzte, das kann auch, wie o.g. noch Argumente haben, dann zwischen "//" eine Anweisung, wo das Kommando auszuführen ist, bei "s" dann noch, durch was ersetzt werden soll. Möglicherweise ist http://www.tty1.net/sed-tutorium/index.html eine gute Einführung zum Reinlesen... cu jth -- www.teddylinx.de -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org

Am 18.05.2012 16:16, schrieb Susan Ivanova:
Schnellschuß + "Volltreffer". Tut perfekt! Danke erstmal. Allerdings habe ich jetzt die nächste Herausforderung, die noch mindestens eine Nummer zu groß für mich ist: Und zwar muss ich, um bei oberem Beispiel zu bleiben, die Datei Alt.csv einlesen, die Zeilen wie oben entfernen, und dann an jede Zeile die noch übrig ist vorne dran noch einen Wert einfügen. und dieser Wert soll die "modification time" der Datei Alt.csv sein. Alles klar? Beispiel: Angenommen die Datei Alt.csv sieht so aus -rw-r--r-- 1 norbert users 123 May 14 20:27 Alt.csv und enthält die Zeilen <bla> bla bla; </bla> irgend; ein; Text; Dann soll Neu.csv so aussehen: 2012-05-14 20:72;bla bla; 2012-05-14 20:72;irgend; 2012-05-14 20:72;ein; 2012-05-14 20:72;Text; Hmmm... Alleine schaff ich das nie... Norbert -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org

Hallo Norbert, hallo Leute, Am Montag, 21. Mai 2012 schrieb Norbert Zawodsky:
Ich liefere Dir mal ein paar Einzelteile - darfst Du dann selbst mit Deinem bestehenden sed-Befehl zusammenbasteln ;-) filedate=$(date -r DATEINAME '+%Y-%m-%d-%H-%M') sed "s/^/$filedate;/" < Alt.csv Dabei sind zwei Dinge wichtig: - ^ matcht auf den Zeilenanfang - den sed-Befehl musst Du in " setzen, weil mit ' die Variable $filedate nicht von der bash ersetzt würde Ach ja: theoretisch kannst Du obiges auch kombinieren zu sed "s/^/$(date -r DATEINAME '+%Y-%m-%d-%H-%M');/" < Alt.csv aber zwecks Lesbarkeit ist der Umweg über die Variable IMHO die schönere Lösung. Gruß Christian Boltz --
-- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org

Am 18.05.2012 16:08, schrieb Norbert Zawodsky:
sed -e '1,3d' -e '/^</d' Alt.txt > Neu.txt si -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org

Am 18.05.2012 16:16, schrieb Susan Ivanova:
Hi, naja, Du kannst Dir sed wie einen Editor, z.B. vi vorstellen, nur halt ohne Tastatureingaben, stattdessen scripte. Im script zuerst mal das Kommando, "s" für Ersetzen ist sicher das meistgenutzte, das kann auch, wie o.g. noch Argumente haben, dann zwischen "//" eine Anweisung, wo das Kommando auszuführen ist, bei "s" dann noch, durch was ersetzt werden soll. Möglicherweise ist http://www.tty1.net/sed-tutorium/index.html eine gute Einführung zum Reinlesen... cu jth -- www.teddylinx.de -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org

Am 18.05.2012 16:16, schrieb Susan Ivanova:
Schnellschuß + "Volltreffer". Tut perfekt! Danke erstmal. Allerdings habe ich jetzt die nächste Herausforderung, die noch mindestens eine Nummer zu groß für mich ist: Und zwar muss ich, um bei oberem Beispiel zu bleiben, die Datei Alt.csv einlesen, die Zeilen wie oben entfernen, und dann an jede Zeile die noch übrig ist vorne dran noch einen Wert einfügen. und dieser Wert soll die "modification time" der Datei Alt.csv sein. Alles klar? Beispiel: Angenommen die Datei Alt.csv sieht so aus -rw-r--r-- 1 norbert users 123 May 14 20:27 Alt.csv und enthält die Zeilen <bla> bla bla; </bla> irgend; ein; Text; Dann soll Neu.csv so aussehen: 2012-05-14 20:72;bla bla; 2012-05-14 20:72;irgend; 2012-05-14 20:72;ein; 2012-05-14 20:72;Text; Hmmm... Alleine schaff ich das nie... Norbert -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org

Hallo Norbert, hallo Leute, Am Montag, 21. Mai 2012 schrieb Norbert Zawodsky:
Ich liefere Dir mal ein paar Einzelteile - darfst Du dann selbst mit Deinem bestehenden sed-Befehl zusammenbasteln ;-) filedate=$(date -r DATEINAME '+%Y-%m-%d-%H-%M') sed "s/^/$filedate;/" < Alt.csv Dabei sind zwei Dinge wichtig: - ^ matcht auf den Zeilenanfang - den sed-Befehl musst Du in " setzen, weil mit ' die Variable $filedate nicht von der bash ersetzt würde Ach ja: theoretisch kannst Du obiges auch kombinieren zu sed "s/^/$(date -r DATEINAME '+%Y-%m-%d-%H-%M');/" < Alt.csv aber zwecks Lesbarkeit ist der Umweg über die Variable IMHO die schönere Lösung. Gruß Christian Boltz --
-- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
participants (4)
-
Christian Boltz
-
Joerg Thuemmler
-
Norbert Zawodsky
-
Susan Ivanova