Ik heb een script gemaakt die blokken tekst moet verwijderen.
------------------------------------------------------------
file=`cat wert.tor | wc -l`
until [ "$file" = "0" ] # hier stopt het script als er geen namen meer zijn in het tekstbestand wert.tor
do
first_line=`cat wert.tor | head -1` # hier wordt de eerste lijn in een variable gestoken
sed '/\<file/,/file\>/{H;d;};x;/'"$first_line"'/ d' proef.tor > vret.tor # hier wordt alles verwijderd tussen de
#twee keywoorden en inclusief deze lijnen
sed '/^\s*$/d' vret.tor > bron.tor # verwijderd ook lijnen met een spatie
sed -e '/<file/i\ ' -e '/ file>/a\ ' bron.tor > eind.tor # hier wordt er een lege lijn ingevoegd voor <file en na /file> dit dient om een blok te maken
mv eind.tor proef.tor
sed '1 d' wert.tor > lief.tor # hier wordt de eerste lijn van het tekstbestand verwijderd
mv lief.tor wert.tor
file=`cat /home/danny/wert.tor | wc -l` # hier wordt er geteld hoeveel lijnen er nog in boeken.txt zitten
done
---------------------------------------------------------------------------------------------
Deze until werkt perfect.
Het probleem is, als er in het bestand wert.tor meerdere lijnen zijn dat er in het bestand proef.tor niet alleen het juiste blok wordt verwijderd maar ook een blok op het einde van het bestand.
Dus als er in wert.tor twintig lijnen zijn, dan nadat deze until gedaan is zijn er in het bestand proef.tor negentien blokken op het einde verwijderd, dus altijd eentje minder.
Ik vind het niet, hoe het komt dat die blokken op het einde ook verwijderd worden.
Als er iemand raad weet hiermee, dank in ieder geval.