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 -- 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