Hallo,
ich kann hier mein ganzes Problem nicht komplett erläutern, daher soweit wie ich bin.
Ich möchte in einer sehr langen Textdatei bestimmte Zeilen abändern. Der zu ändernde Text ist immer gleich, die Zeilen unterscheiden sich aber im sonstigen Inhalt, der gleich bleiben soll. Aus einer anderen Datei konnte ich die entsprechenden Zeilennummern extrahieren. Ich habe also die anzupassende Datei und eine Datei mit einer Zeilennummer je Zeile. Ich habe leider keine Möglichkeit gefunden ein Suchen und Ersetzen mit der Shell nur für bestimmte Zeilennummern durchzuführen, konnte aber damit immer exakte die Zeile auslesen:
while IFS= read -r line ; do lines=$(head --lines=$line $input | tail -n 1) echo $lines done <<< numbers
'numbers' ist die Datei mit den Zeilennummern, $input die anzupassende Datei. 'numbers' wird zeilenweise eingelesen, mit head zunächst alle Zeilen bis zu dieser angezeigt und dann mit tail auf die letzte Zeile beschnitten. Im nächsten Schritt wollte ich nun den Inhalt in der Datei suchen und ersetzen. Der Inhalt enthält aber alles mögliche an Zeichen, hier ein Bsp.
Dialogue: 0,0:02:04.12,0:02:06.08,*Default,NTP,0,0,0,,das man bei dieser Version\Nsehen kann.
Das ist eine Zeile aus einer ASS-Untertiteldatei. Geändert werden soll "Default" in irgendetwas anderes wie "oben" oder so. Ich hab das mit sed versucht, das ist aber im Trüben fischen, ich glaube der hat wegen der Zeichen Probleme, z. B. dem \.
Friedrich