/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
Hvorfor gør sed sådan?
Fra : Klaus Alexander Seis~


Dato : 27-08-01 18:48

Hej rødder.

Jeg kan ikke forstå dette her:

#v+
$ echo 'a & b' | sed 's/ & / & /g'
a & amp; b
$
#v-

Hvorfor er der to mellemrum mellem 'a' og '&' i resultatet? Og hvorfor
er der mellemrum mellem '&' og 'amp;'?

Er der noget jeg har overset?

Jeg bruger GNU sed 3.02.


// Klaus

--
><>°    vandag, môre, altyd saam

 
 
Michael Hjorth (27-08-2001)
Kommentar
Fra : Michael Hjorth


Dato : 27-08-01 18:56

Klaus Alexander Seistrup wrote:
>
> Hej rødder.
>
> Jeg kan ikke forstå dette her:
>
> #v+
> $ echo 'a & b' | sed 's/ & / &amp; /g'
> a & amp; b
> $
> #v-
>
> Hvorfor er der to mellemrum mellem 'a' og '&' i resultatet? Og hvorfor
> er der mellemrum mellem '&' og 'amp;'?
>
> Er der noget jeg har overset?
>
Ja, & i replacement-strengen betyder 'gentag den matchede streng her'
dvs. ' & '
så du skal skrive

sed 's/ & / \&amp; /g' i stedet.

Michael.

Peter Makholm (27-08-2001)
Kommentar
Fra : Peter Makholm


Dato : 27-08-01 19:01

Klaus Alexander Seistrup <nospam2001aug@magnetic-ink.dk> writes:

> Hvorfor er der to mellemrum mellem 'a' og '&' i resultatet? Og hvorfor
> er der mellemrum mellem '&' og 'amp;'?

RTFM. Der står ikke meget om regulære udtryk, men netop dette står
der:

s/regexp/replacement/
Attempt to match regexp against the pattern space.
If successful, replace that portion matched with
replacement. The replacement may contain the spe­
cial character & to refer to that portion of the
pattern space which matched, and the special
escapes \1 through \9 to refer to the corresponding
matching sub-expressions in the regexp.

Læg især mærke til sætningen: "The replacement may contain the special
character & ..." Du skal altså escape og-tegnet. Det er ikke en
GNUisme, der er også beskrivet i manualen til FreeBSD's sed.


--
Når folk spørger mig, om jeg er nørd, bliver jeg altid ilde til mode
og svarer lidt undskyldende: "Nej, jeg bruger RedHat".
-- Allan Olesen på dk.edb.system.unix

Klaus Alexander Seis~ (27-08-2001)
Kommentar
Fra : Klaus Alexander Seis~


Dato : 27-08-01 19:32

Peter Makholm skrev:

> RTFM.

Dét var en god idé. Tak til dig og Michael (og Adam pr mail).


// Klaus

--
><>°    vandag, môre, altyd saam

Michael Hjorth (28-08-2001)
Kommentar
Fra : Michael Hjorth


Dato : 28-08-01 21:56

Peter Makholm wrote:

>
> Læg især mærke til sætningen: "The replacement may contain the special
> character & ..." Du skal altså escape og-tegnet. Det er ikke en
> GNUisme, der er også beskrivet i manualen til FreeBSD's sed.
>
Og i øvrigt også på SUN Solaris, men ikke på en gammel SCO (3.2).

Michael.

Steen Suder (27-08-2001)
Kommentar
Fra : Steen Suder


Dato : 27-08-01 19:50

Klaus Alexander Seistrup wrote:
>
> Hej rødder.
>
> Jeg kan ikke forstå dette her:
>
> #v+
> $ echo 'a & b' | sed 's/ & / &amp; /g'
> a & amp; b
> $
> #v-
>
> Hvorfor er der to mellemrum mellem 'a' og '&' i resultatet? Og hvorfor
> er der mellemrum mellem '&' og 'amp;'?
>
> Er der noget jeg har overset?

Skal der escapes?

echo 'a & b' | sed 's/ \& /\&amp;/g'
a&amp;b

--
Steen Suder

"We reject kings, presidents and voting.
We believe in rough consensus and running code."

Søg
Reklame
Statistik
Spørgsmål : 177557
Tips : 31968
Nyheder : 719565
Indlæg : 6408885
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste