|
| 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/ & / & /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/ & / \& /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/ & / & /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/ \& /\&/g'
a&b
--
Steen Suder
"We reject kings, presidents and voting.
We believe in rough consensus and running code."
| |
|
|