Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: verwijderen blokken tekst  (gelezen 1572 keer)

Offline thailand

  • Lid
verwijderen blokken tekst
« Gepost op: 2017/09/09, 11:09:53 »
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.

Offline thailand

  • Lid
Re: verwijderen blokken tekst
« Reactie #1 Gepost op: 2017/09/11, 07:34:26 »
Dit probleem heb ik nu toch kunnen oplossen.
Voor wie zich hiervoor interesseert?
Ik heb deze lijn vervangen:
 sed '/\<file/,/file\>/{H;d;};x;/'"$first_line"'/ d'  proef.tor >  vret.tor
door:
sed '/'"$first_line"'/,/file\>/{H;d;};x;/'"$first_line"'/ d'  proef.tor >  vret.tor