← Back to team overview

sslug-teknik team mailing list archive

Re: Et problem med ' (shell-scripting)

 

Thomas Gulmark <gulmus@xxxxxxxxxxxxxxxx> writes:

> At 17:28 30-06-00 +0200, you wrote:

> >shellen ser: s/'/\\\\'/f
> >
> >Shellen behandler så linien, blandt andet fortolker den \x-ting.
> >
> >så ser sed(1):     s/'/\\'/f
> >
> >Hvorefter det skulle vere let at se at den opføre sig fornuftigt.
> 
> Ja, det ser jo fornuftigt ud :)
> Men det virker ikke i Henriks tilfælde.
> Han skriver:
> 
>  >Problemet er at en del af ordene
>  >indeholder apostroffer ('), det giver visse problemer når man giver dem til
>  >grep, så jeg ville gerne sende dem igen et lille sed-script (eller
>  >tilsvarende) der satte en \ foran.
> Det får mig til at tro:
> Hvis der sker (endnu) en ekstra "\"-fortolkning, skal der vel egentlig også 
> *to* "\"'er foran apostroffen? Så sed ændrer "foobar's" til "foobar\\'s". 
> Som så bliver givet til grep, der læser det som "foobar\'s". Det bliver 
> vist til noget henad "sed /s/'/\\\\\\\\'/g" (8x\), eller hur? Langt ude :)

Jeg tror Peter har ret (jeg tænkte selv på noget i samme stil lige efter jeg
havde sendt til indlæg).  
Det er for det første ikke meningen at grep skal læse foobar\'s, bagstregen
skal ind for at forhindre bash i at fortolke apostroffen.  
Jeg bad ret klart om et sed-script der gjorde det beskrevne, for det skulle
bruges som en del af en kommando der indtil videre er vokset til mindst 200
tegn, uden at jeg har opnået perfektion endnu.  

For dem der er interesserede i hvad det dog er jeg laver som kræver den slags
kommandoer kan jeg skitsere kommandoen som: 
  for i in `grep | perl | sed | perl`; do grep $i; done
og jo, sed kunne godt udskiftes med perl, men i hvert fald det ene perl-script
kan ikke udskiftes med sed. 
Formålet er i al sin enkelthed at tage alle ord med stort begyndelsesbogstaver
i ispell-ordlisten, ændre første bogstav til lille, og søge efter det i
selvsamme ordliste. Formålet med det er naturligvis at få fjernet anders,
andreas, barbados og lign.
Problemerne kommer af at der er ord der indeholder apostroffer
(f.eks. Andreas'), og at nogle af ordene i ordlisten efterfølges af
bøjningsoplysninger.
(Og alt dette vidste Peter godt, men jeg tror nu ikke det var grunden til at
han svarede som han gjorde.)

Henrik

-- 
Henrik Grove --- grove@xxxxxxx --- http://www.diku.dk/students/grove/
----------------------------------------------------------------------
Fordelen ved Windows er, at man ikke behøver foretage
sig noget dumt for at få den til at gå ned!


References