Am Freitag 31 Oktober 2014, 13:04:04 schrieben Sie:
Am Fri, 31 Oct 2014 12:29:48 +0100 schrieb Dr. Jürgen Vollmer
: Hallo Al
Am Donnerstag, 30. Oktober 2014, 22:57:52 schrieb Аl Воgnеr:
Gegeben ist beispielhaft
Textdatei="irgendwas.txt"
Darin befindet sich zB ------------------------ bla blub worte keyword1 bla suchkriterium 'wort1:wort2:wort3:etc' xx blu blo worte keyword1 bla suchkriterium 'wort1:wort2:wort3:etc' yy worte keyword1 bla suchkriterium 'wort1:wort2:wort3:etc' zz was anderes etc ------------------------
Nun geht es darum in einem Bash-Script den Teil zwischen '' zu ersetzen, wenn in der Zeile das Suchkriterium gefunden wird, wobei das zu Ersetzende in einer Variable gespeichert ist. Der Aufruf des Textes erfolgt über die Variable Textdatei.
In diesem Fall würde also in folgenden Zeilen das zu ersetzen sein, das sich zwischen den '' befindet, also 'wort1:wort2:wort3:etc'
worte keyword1 bla suchkriterium 'wort1:wort2:wort3:etc' xx worte keyword1 bla suchkriterium 'wort1:wort2:wort3:etc' yy worte keyword1 bla suchkriterium 'wort1:wort2:wort3:etc' zz
und zwar durch
neu="wort4:wort5:etc"
Gegeben ist, dass nach "suchkriterium" immer ein Text folgt, der zwischen '' steht und der zu ersetzen ist. Die Länge des Textes zwischen den '' ist meistens konstant, aber ich denke das ist nicht so wichtig.
Wie macht man das am besten? Mit sed, awk oder?
Αl
sed -e "/suchkriterium/ s/'wort1:wort2:wort3:etc'/'wort4:wort5:etc'/" $Textdatei
Siehe auch http://de.wikipedia.org/wiki/Sed_%28Unix%29
Danke, aber zum einen bitte als Variable (und da habe ich bei sed immer Probleme) und zum anderen bin ich mir nicht sicher, ob es das tut, das ich möchte. Ich weiß ja nicht, was der zu suchende Teil ist, sondern weiß nur, dass es der Teil nach dem Suchkriterium ist auf das ' folgt und mit ' endet.
Αl
---- #!/bin/sh datei=was-auch-immer.txt suche=suchkriterium neu=wort4:wort5:etc sed -e "/$suche/ s/'.*'/'$neu'/" $datei ---- ok, es mag Probleme geben, wenn suchkriterium selbst ein ' oder andere "kritische" Zeichen wie $ oder " enthält. Dann muss man das ganze aber eben noch escapen. Gleiches für Ersetztext "$neu" Jürgen -- Dr.rer.nat. Jürgen Vollmer, Am Rennbuckel 21, D-76185 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de ------------------------------------------------------------------------------- Diese EMail ist elektronisch mittels GPG / PGP signiert. Diese elektronische Unterschrift ist in einem EMail-Anhang enthalten. Leider kann die Signatur ohne die Installation entsprechender Programme weder geprüft noch angezeigt werden. Mehr dazu unter: http://www.gnupg.org oder auch http://www.pgpi.org -------------------------------------------------------------------------------