Hallo zusammen, ich müßte folgendes durchführen: ~ cat /pfad/datei #!/bin/bash [Unbestimmte Anzahl von Zeilen] # Zeile mit einem bestimmten, eindeutigen Kommentar Zu löschende Zeile1 Zu löschende Zeile2 Zu löschende Zeile3 [Rest des Skriptes] Wie kann ich die Zeile mit dem Kommentar suchen, und die genau 3 zu löschenden / zu ersetzenden Zeilen ausschneiden? Am Schluß soll das so aussehen: ~ cat /pfad/datei #!/bin/bash [Unbestimmte Anzahl von Zeilen] # Zeile mit einem bestimmten, eindeutigen Kommentar [Genau eine neue Zeile] [Rest des Skriptes] Danke für Hinweise! -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Andre Tann wrote:
ich müßte folgendes durchführen:
~ cat /pfad/datei
#!/bin/bash [Unbestimmte Anzahl von Zeilen] # Zeile mit einem bestimmten, eindeutigen Kommentar Zu löschende Zeile1 Zu löschende Zeile2 Zu löschende Zeile3 [Rest des Skriptes]
Wie kann ich die Zeile mit dem Kommentar suchen, und die genau 3 zu löschenden / zu ersetzenden Zeilen ausschneiden? Am Schluß soll das so aussehen:
~ cat /pfad/datei
#!/bin/bash [Unbestimmte Anzahl von Zeilen] # Zeile mit einem bestimmten, eindeutigen Kommentar [Genau eine neue Zeile] [Rest des Skriptes]
Danke für Hinweise!
$> cat datei #!/bin/bash aaa bbb ccc # Kommentar loesche 1 loesche 2 loesche 3 ddd eee fff # Kommentar loesche 4 loesche 5 loesche 6 ggg hhh iii $> awk '{print}; /Kommentar/ {getline; getline; getline; print "eingefuegt"}' datei #!/bin/bash aaa bbb ccc # Kommentar eingefuegt ddd eee fff # Kommentar eingefuegt ggg hhh iii Erklaerung: awk liest die Datei zeilenweise ein, jede Zeile wird wieder ausgegeben (das erste print). Trifft awk auf eine Zeile, die "Kommentar" enthaelt, so werden die naechsten drei Zeilen eingelesen aber nicht ausgegeben, dann kommt stattdessen der Ersatztext (das zweite print). That's all. HTH, Thomas -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Thomas Hertweck, Dienstag, 23. Dezember 2008 21:49:
awk '{print}; /Kommentar/ {getline; getline; getline; print "eingefuegt"}' date
Funktioniert einwandfrei, danke! Muß das zum Anlaß nehmen, mir wenigstens mal die Grundstruktur von awk-Skripten zu Gemüte zu führen. Die nächsten Tage hab ich ja Zeit ;) Danke+Gruß nach London! -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Die, 23 Dez 2008, Andre Tann schrieb: [..]
~ cat /pfad/datei
#!/bin/bash [Unbestimmte Anzahl von Zeilen] # Zeile mit einem bestimmten, eindeutigen Kommentar [Genau eine neue Zeile] [Rest des Skriptes]
$> sed '/# Kommentar/{n;N;N;N;c\ eingefügt ;}' datei Mehrere Zeilen einfügen geht auch ;) -dnh -- Ankh-Morpork had dallied with many forms of government and had ended up with that form of democracy known as One Man, One Vote. The Patrician was the Man; he had the Vote. -- Discworld politics explained (Terry Pratchett, Mort) -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (3)
-
Andre Tann
-
David Haller
-
Thomas Hertweck