Portál AbcLinuxu, 11. května 2025 10:45

Dotaz: SED rozdeleni retezco do vicero radku

19.3.2012 13:23 jackar
SED rozdeleni retezco do vicero radku
Přečteno: 232×
Odpovědět | Admin
Potreboval bych poradit jak napsat sed prikaz, ktery mi z jednoho retezce ve formatu:

neco_na_zacatku"BEGIN":"veta_1","END"neco_mezi_2"BEGIN":"veta_2","END"neco_mezi_3"BEGIN":"veta_3","END" ... neco_mezi_N"BEGIN":"veta_N","END"neco_na_konci

udela soubor, kde na samostatnem radku budou postupne zapsany vety:

veta_1

veta_2

veta_3

. . .

veta_N

neco_* muze obsahovat libovolny znak, tedy i uvozovky: ", ale neobsahuje "BEGIN" ci "END".

veta_* muze obsahovat libovolny znak, ale uvozovky pouze ve formatu se zpetnym lomitkem: \". Tedy muze obsahovat napr. "BEGIN

Dekuji za inspiraci
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

19.3.2012 16:03 NN
Rozbalit Rozbalit vše Re: SED rozdeleni retezco do vicero radku
Odpovědět | | Sbalit | Link | Blokovat | Admin
echo "fooBEGINretezENDretezBEGINretezENDbar" | sed 's/BEGIN/\n/g' | sed 's/END/\n/g'
NN
19.3.2012 16:22 l4m4
Rozbalit Rozbalit vše Re: SED rozdeleni retezco do vicero radku
s/BEGIN\|END/\n/g
20.3.2012 09:20 NN
Rozbalit Rozbalit vše Re: SED rozdeleni retezco do vicero radku
thx
19.3.2012 16:44 jackar
Rozbalit Rozbalit vše Re: SED rozdeleni retezco do vicero radku
Odpovědět | | Sbalit | Link | Blokovat | Admin
prvne jsem zkusil neco jako tohle

sed -e 's/"BEGIN":"/\n/g' -e 's/"END".*//g'

ale problem je s tim END. sed aplikuje maximalni zravost a smazemi vse krome prvni vety. Lze SEDu nejak omezit zravost nebo mu rict, aby aplikoval regex nezavisle radek po radku?
19.3.2012 16:56 jackar
Rozbalit Rozbalit vše Re: SED rozdeleni retezco do vicero radku
Myslim,ze jsem na to prisel:

sed -e 's/"BEGIN":"/\n/g' -e 's/"END"[^\n]*//g'

Ale to omezeni zravosti ci vyhodnovani vyrazu po radcich me stale zajima.

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.