sed - odstranenie nasledujuceho riadku

Sekcia: Programovanie 08.12.2006 | 00:13
Avatar Frantisek Klabzuba Debian  Používateľ
Ahoj. Mam takyto textovy subor1: body p nejaky text nejaky text nejaky text nejaky text p nejaky text nejaky text p nejaky text nejaky text nejaky text bodyend Je to cosi ako html. Pomocou nasledujuceho sed skriptu "uzatvaram" bloky p: sed 's/^p$/pend\np/; s/^bodyend$/pend\nbodyend/' subor1 > subor2 Vysledkom je toto: body pend p nejaky text nejaky text nejaky text nejaky text pend p nejaky text nejaky text pend p nejaky text nejaky text nejaky text pend bodyend Popridaval tie pend co su konce blokov, ale jeden to hodilo aj na druhy riadok. Neviete ako pomocou sedu tento prvy pend odstranit? Skusal som uz vselico, napr "sed '/^body$/n;/^pend$/d;N' subor2" a pod. Neviete niekto napisat ten sed skript? Vdaka.
    • Re: sed - odstranenie nasledujuceho riadku 01.12.2006 | 14:30
      Avatar Frantisek Klabzuba Debian  Používateľ
      Oprava, nevzalo mi to \\n, takze znovu: sed 's/^p$/pend\\np/; s/^bodyend$/pend\\nbodyend/' subor1 > subor2
      • Re: Re: sed - odstranenie nasledujuceho riadku 07.12.2006 | 02:20
        -   Návštevník
        to co si tu napisal mi funguje: #! /bin/sh sed 's/^p$/pend\np/; s/^bodyend$/pend\nbodyend/' file.txt > file2.txt sed -i '/^body$/n;/^pend$/d;N' file2.txt
        • Re: Re: Re: sed - odstranenie nasledujuceho riadku 07.12.2006 | 02:24
          -   Návštevník
          sorry - este som zabudol na koniec dodat: sed -i '/^bodyend$/i \ pend' file2.txt
          • Re: Re: Re: Re: sed - odstranenie nasledujuceho ri 07.12.2006 | 02:29
            -   Návštevník
            uz sa tesim na implementaciu shakala na linuxos lebo kvoli absencii nahladov sa tu niekedy neda poriadne pisat: v mojom prispevku z 07.12.2006 01:24 nakonci riadku sed -i \'/^bodyend$/i ma byt spatne lomitko
            • Re: Re: Re: Re: Re: sed - odstranenie nasledujuceh 07.12.2006 | 09:27
              Avatar Frantisek Klabzuba Debian  Používateľ
              No nefunguje to. Skus to napisat este raz. Spatne lomitko \\ musis pisat dvakrat \\\\. Inak jedna z verzii co si tu poslal robi to ze zmaze "pend" v "p" bloku ktory obsahuje neparny pocet riadkov!
    • Re: sed - odstranenie nasledujuceho riadku 08.12.2006 | 00:13
      -   Návštevník
      takze este raz - tu je skript: #! /bin/sh sed 's/^p$/pend\\np/; s/^bodyend$/pend\\nbodyend/' subor1 > subor2 sed -i '/^body$/n;/^pend$/d;N' subor2 sed -i '/^bodyend$/i\\ pend' subor2 da sa to urobit aj takto: #! /bin/sh sed '/^p$/i\\ pend /^body$/n /^bodyend$/i\\ pend ' subor1 > subor2