sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #102477
Re: sed regular expression driller mig
On Fri, 10 Aug 2012 12:21:12 +0200
Egon Andersen <ean@xxxxxxxxx> wrote:
> Hej SSLUG'er
>
> Jeg har en stak filer, hvor der har indsneget sig en fejl.
> Fejlen er simpelthen at der er kommet en tekst med der skulle
> være blanktegn. Det der driller mig er blot, at teksten starter
> med: \(
> og slutter med
> \)
>
> Altså en tekst som ligner følgende: \(den fejlagtige tekst\)
>
> Jeg har forsøgt noget i stil med:
>
> sed -c -i_orig {s/\(den fejlagtige tekst\)/ /}
> *.txt
>
> Jeg får fejlmeddelelsen:
> sed: -e udtryk nr. 1, tegn 7: unterminated `s' command
>
> Jeg har også forsøgt at escape både ' '(mellemrum), \ og (, men
> jeg vedbliver at få en fejl enten i stil med ovenstående eller
> syntax error.
>
> Jeg er overbevist om at det er et eller andet simpelt jeg bare
> lige har misset.
>
> Håber der er en der kan hjælpe.
--- --- ---
Unterminated: er vel fordi der er huller (spaces) i commandstring og
den afleveres af kommandolinien som brudstykker til sed.
Kommandolinien "kan ikke lide" texter med mellemrum; selv om det
ikke er nødvendigt er det en meget god konvention at omklamre
text-strings med enten single-quotes eller double-quotes. Det er
fordi kommando-linie-parseren (shell'en) afleverer text-strenge én
ad gangen til applikationen. Man kunne godt lave noget program, som
selv fandt ud af at "brugeren nok mener at de her hører sammen",
men det ville sikkert skabe andre problemer.
Eskild Nielsen har svaret på problemet:
--- --- ---
Hvorfor bruger du (og svarene) ikke single quotes omkring
sed-expressions? Alt andet er i mine øjne selvmord eller i det
mindste plagsomt :) Min sed har ikke -c option.
sed -i_orig '{s/\(den fejlagtige tekst\)/ /}'
Man må gerne bruge andet end forward-slash som meta-tegn i
substutions-kommandoer, næsten alt andet er bedre, ex.:
sed -i_orig '{s#\(den fejlagtige tekst\)# #}' ufn
I mine øyne lettere at læse :) Jeg har lige testet det med et
enkelt exempel og det ser OK ud.
--
Donald Axel <donax@xxxxxx>
References