Portál AbcLinuxu, 10. května 2025 01:06

Dotaz: sed nahradenie v texte

18.8.2008 17:11 Peter Farbiak
sed nahradenie v texte
Přečteno: 330×
Odpovědět | Admin
Dobry den.

Mam text v takomto tvare

val=""daňové prázdniny","úľava z dane""

a potrebujem tie uvodzovky vo vnutri val="..." nahradiť na ;quot; takto

val=";quot;daňové prázdniny;quot;,;quot;úľava z dane;quot;"

myslim,ze by to malo ist nejakym sedom, ale neviem akym.

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

Odpovědi

frEon avatar 18.8.2008 17:24 frEon | skóre: 40 | Praha
Rozbalit Rozbalit vše Re: sed nahradenie v texte
Odpovědět | | Sbalit | Link | Blokovat | Admin
sed 's/"/;quot;/g'
--------------------
     ^ ^    ^   ^
     | |    |   |
nahrad |    |   |
       |    |   |
uvozovky    |   |
            |   |
       timhletim|
                |
a cin tak dokud nedojdes na konec radku
Talking about music is like dancing to architecture.
18.8.2008 18:09 Peter Farbiak
Rozbalit Rozbalit vše Re: sed nahradenie v texte
no to je jasne, lenze tento prikaz nahradi uvodzovky v celom texte. Mne ide o to, aby nahradil iba uvodzovky "vnutri" val.
18.8.2008 19:02 Přemek Jordák | skóre: 12 | Beroun
Rozbalit Rozbalit vše Re: sed nahradenie v texte
Mohlo by to jít takto? sed 's/[^"]*""\([^"]*\)","\([^"]*\)""/val=";quot\1;quot,;quot\2;quot"/'
Blogy neprohlížím, nepíši a ani se jim valně nesměji
18.8.2008 18:59 ams
Rozbalit Rozbalit vše Re: sed nahradenie v texte
Odpovědět | | Sbalit | Link | Blokovat | Admin
sed 's/"/;quot;/g;s/;quot;/"/;s/\(.*\);quot;/\1"/'
18.8.2008 19:09 ams
Rozbalit Rozbalit vše Re: sed nahradenie v texte
Anebo
sed 's/"/;quot;/g;s/;quot;\(.*\);quot;/"\1"/'
19.8.2008 13:14 Peter Farbiak
Rozbalit Rozbalit vše Re: sed nahradenie v texte
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ani jeden z tychto navrhov bohuzial nerobi to co som chcel. myslim, ze som zle vysvetlil co vlastne potrebujem spravit. ide o to, ze som sem nemohol vlozit dlhsi usek kodu, pretoze v nom boli zakazane tagy. prikladam teda odkaz na subor v ktorom je ukazane s akym formatom pracujem.

http://eva.fit.vutbr.cz/~xfarbi00/priklad

ja potrebujem v takomto subore zmenit uvodzovky len v texte vnutri val="(text)", pretoze ide o xml subor a ak su v samotnom texte uvodzovky pokazi sa cela konstrukcia XML.

teda ak je v subore

val="papier"

tak ho ten sed necha tak ako je, avsak ak je v subore

val=""nejaky" papier"

tak by sa z neho malo stat

val=";quot;nejaky;quot; papier"

Dufam,ze uz som to vysvetlil dostatocne a budete mi vediet pomoct. Vdaka
19.8.2008 14:17 ams
Rozbalit Rozbalit vše Re: sed nahradenie v texte
Ano, ted je to jasne. Drive jsem si myslel, ze mate na radku jenom to val="....". Nabizim reseni v Perlu:
perl -pe 'if(/(^.*?val=")(.*)(".*)/s){($a,$b,$c)=($1,$2,$3);$b=~s/"/;quot;/g;$_="$a$b$c"}' soubor.xml
Reseni na sed by bylo mene elegantni, ale pokud potrebujete prave sed, tak dejte vedet.
19.8.2008 14:20 ams
Rozbalit Rozbalit vše Re: sed nahradenie v texte
A zase specham. Prehlednejsi by bylo
perl -pe 'if(($a,$b,$c)=/(^.*?val=")(.*)(".*)/s){$b=~s/"/;quot;/g;$_="$a$b$c"}' soubor.xml
20.8.2008 13:32 Peter Farbiak
Rozbalit Rozbalit vše Re: sed nahradenie v texte
Dakujem. Toto bolo presne to, co som potreboval. A to, ze je to v Perle je OK. Este raz vdaka.

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.