Ik ontken het bestaan van IE.
Verwijderd
Hoe ziet je expressie er precies uit? Voer je deze in een shell uit? Zo ja, dan haalt de shell waarschijnlijk de escape van ) weg. Probeer eens dubbele aanhalingstekens om je expressie te zetten.
Post het commando/relevant deel van het script eens. Overigens kun je bij Google wel zoeken op "sed special characters" of "sed character escaping" of iets dergelijks. Wees creatief!
Post het commando/relevant deel van het script eens. Overigens kun je bij Google wel zoeken op "sed special characters" of "sed character escaping" of iets dergelijks. Wees creatief!
de ( hoef je niet te escapen:
Singapore:~ frim$ echo "ge(ukt" | sed 's/(/l/'
gelukt
de ge-escapede variant gebruik je wel om te groupen. In perl is dit trouwens net andersom.
Singapore:~ frim$ echo "ge(ukt" | sed 's/(/l/'
gelukt
de ge-escapede variant gebruik je wel om te groupen. In perl is dit trouwens net andersom.
OK, het is officiëel, ik ben een idioot.
Dingen escapen zit er bij mij zo ingebakken, dat ik het niet eens zonder geprobeerd heb.
Zonder escapen werkt het inderdaad prima.
Dingen escapen zit er bij mij zo ingebakken, dat ik het niet eens zonder geprobeerd heb.
Zonder escapen werkt het inderdaad prima.
Ik ontken het bestaan van IE.
Het wil toch nog niet helemaal lukken.
Omdat ik ook gebruik wil maken van negative lookbehinds, heb ik besloten te switchen naar de -R mode (perl mode), wat ook normalere regular expressions geeft.
Ik probeer een aantal javascript-regeltjes te parsen, een voorbeeldje:
Zoals je waarschijnlijk begrijpt, worden de waarden gesplitst op ',' . Er kunnen echter ook escapede (?) ' tekens inzitten, en die wil ik niet hebben, vandaar een negative lookbehind:
Bash gaat dan zeuren over niet gevonden events, door die ! dus die escape ik ook eventjes:
Maar dan krijg ik van ssed een pattern error. Als ik de lookbehind weglaat, werkt het wél, maar dan gaat het dus bij sommige regels mis.
Ik zie echt niet wat ik fout doe, maar ik ben natuurlijk ook een idioot
.
Omdat ik ook gebruik wil maken van negative lookbehinds, heb ik besloten te switchen naar de -R mode (perl mode), wat ook normalere regular expressions geeft.
Ik probeer een aantal javascript-regeltjes te parsen, een voorbeeldje:
JavaScript:
1
| topic('696799','Tags + Betekenissen.','faqredl.gif','6','Dark_Killah','77910','0','1526','','','04-05-2005 15:14','0','1115212460','1115212460','25','1'); |
Zoals je waarschijnlijk begrijpt, worden de waarden gesplitst op ',' . Er kunnen echter ook escapede (?) ' tekens inzitten, en die wil ik niet hebben, vandaar een negative lookbehind:
code:
1
| cat topics | ssed -R "s/^ topic\('([0-9]*)','(.*?)(?<!\\)'/\1;\2;/g" > topics2 |
Bash gaat dan zeuren over niet gevonden events, door die ! dus die escape ik ook eventjes:
code:
1
| cat topics | ssed -R "s/^ topic\('([0-9]*)','(.*?)(?<\!\\)'/\1;\2;/g" > topics2 |
Maar dan krijg ik van ssed een pattern error. Als ik de lookbehind weglaat, werkt het wél, maar dan gaat het dus bij sommige regels mis.
Ik zie echt niet wat ik fout doe, maar ik ben natuurlijk ook een idioot
Ik ontken het bestaan van IE.
Verwijderd
Met een uitroepteken tussen quotes escapen heb ik ook al eens zitten prutsen:
Zonder aanhalingstekens geen problemen... De bash-manual zegt dat als je achter het uitroepteken een whitespacekarakter, = of ( zet, het uitroepteken niet als speciaal wordt gezien. Je kunt dus proberen achter de ! een spatie te zetten met {0} erachter of iets dergelijks.
code:
1
2
3
4
| koning-robot:~ tim$ echo "!" -bash: !: event not found koning-robot:~ tim$ echo "\!" \! |
Zonder aanhalingstekens geen problemen... De bash-manual zegt dat als je achter het uitroepteken een whitespacekarakter, = of ( zet, het uitroepteken niet als speciaal wordt gezien. Je kunt dus proberen achter de ! een spatie te zetten met {0} erachter of iets dergelijks.
[ Voor 4% gewijzigd door Verwijderd op 16-10-2005 16:13 ]
Dat trucje met die spatie werkte overigens niet, maar ik ben erachter dat als je het in een shellscript stopt, history expansion standaard uitstaat, en je dit probleem dus niet hebt.
Toch bedankt voor de reactie
.
Toch bedankt voor de reactie
Ik ontken het bestaan van IE.
Pagina: 1