Ich habe eine sehr große (~ 60MB) Textdatei, in der ich spezifische Block Zeilen mit einem vordefinierten Text ersetzen möchte. Die Zeilennummer jeden Block (3 Zeilen) Start ist bekannt, und sie werden in einer Datei gespeichert:Verwenden Sie sed/awk, um Text in mehreren Zeilen auf einmal zu ersetzen
...
11
30
42
58
...
Ich weiß, dass ich die folgende Option, um einen Block ersetzen kann:
sed -i "Xs,(X+3)s/.*/REPLACEMENT/" filename.txt
jedoch wie für Schleife in einer Ausführung dieses Befehls:
for line in $(cat linenumbers.txt); do
eline=$((${line}+3))
sed -i "Xs,(X+3)s/.*/REPLACEMENT/" filename.txt
done
ist sehr langsam und braucht viel Zeit (> 10'), und ich habe 100s von Dateien, in denen ich Blöcke zu ersetzen. Gibt es eine andere Möglichkeit, dies in einem Durchgang zu tun?
pos das aktuelle und testbare Fragment Ihrer Eingabedatei vor und nach dem Austausch – RomanPerekhrest