Portál AbcLinuxu, 12. května 2025 07:29

Dotaz: Sed a zmazanie konkrétneho riadku medzi regex adresami.

19.8.2009 14:26 pupala | skóre: 21
Sed a zmazanie konkrétneho riadku medzi regex adresami.
Přečteno: 270×
Odpovědět | Admin
Mám textovú štruktúru:
zaciatok1
....
....
toto
....
....
koniec1
zaciatok2
....
toto
....
....
....
koniec2
Potrebujem vymazať riadok s "toto" v konkrétnom umiestnení. Nie všetky riadky s "toto". Problém je to, že "toto" nie je vždy rovnaký počet riadkov od riadkov "zaciatokXXX" a "koniecXXX".
Toto mi nefunguje:
sed -i -e "/zaciatok2/,/koniec2/ /toto/ d" moj_subor
Potrebujem vymazať aj znak konca riadku, takže s/toto// nezafungovalo. Čo robím zle?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

19.8.2009 14:58 chochi | skóre: 29 | Praha
Rozbalit Rozbalit vše Re: Sed a zmazanie konkrétneho riadku medzi regex adresami.
Odpovědět | | Sbalit | Link | Blokovat | Admin

Asi takhle (novy radek pred } je dulezity pro kompatibilitu s Solarisem/BSD - pro Linux neni treba):

sed "/zaciatok2/,/koniec2/ {/toto/d
}" < input > output

 

Tarmaq avatar 19.8.2009 16:20 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: Sed a zmazanie konkrétneho riadku medzi regex adresami.
jemu zrejme bude stacit:
sed -i '/zaciatok2/,/koniec2/ {/toto/d}'
Don't panic!
19.8.2009 23:20 pupala | skóre: 21
Rozbalit Rozbalit vše Re: Sed a zmazanie konkrétneho riadku medzi regex adresami.
Ďakujem.

Ten blok použiť z man stránok ani nenapadol, nepovažoval som to za blok.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.