← Back to team overview

sslug-teknik team mailing list archive

Re: sed - - - - - igen

 

>
> On Mon, 3 Dec 2001, Kim Hermansen wrote:
>
> > Har kikket lidt på det, og problemet er stadig det samme.
> > Den skriver i bedste fald "$FIL" i starten af hver linje, og ikke
> > indholdet af variablen $FIL
> > Så prøver lige for overskuelighedens skyld at forklare lidt bedre
> > ved at skrive den fulde kommando.
>
> > for N in `find /home/kim/txtfiler/*.txt`;do Na=`echo $N|sed
> > s/"\/home\/kim\/txtfiler"/\/ `; cat $N | sed 's/^/$Na/' > $N; done
>
> cat $N | sed 's/^/$Na/' > $N;
>
> Er _ikke_ godt, det kan man ikke.
>
> cat $Na | sed "s/^/$Na/"
> virker hos mig.
>
> Mads
>
> --
> Mads Bondo Dydensborg.                               madsdyd@xxxxxxxxxxxx

Hej med jer
En rigtig interessant situation, som jeg også har bakset med.

Kig på dette:

$ cat > fil1
test1
test2
test3
$ FIL=minfil
$ sed "s/^/$FIL/" fil1
minfiltest1
minfiltest2
minfiltest3
$ cat fil1 | sed "s/^/$FIL/"
minfiltest1
minfiltest2
minfiltest3
$  cat fil1 | sed 's/^/$FIL/'
$FILtest1
$FILtest2
$FILtest3

# hertil er det jo jf guruerne, fx Bourne: The UNIX System
# V Environment. Addison-Wesley 1987, helt normalt
# Der ER jo stor forskel på ' og "

# men nu bliver det spændende

$ FIL=/test/dir/minfil
$ cat fil1 | sed "s/^/$FIL/"
sed: -e expression #1, char 6: Unknown option to 's'
$  cat fil1 | sed 's/^/$FIL/'
$FILtest1
$FILtest2
$FILtest3
# problem med "  Selvfølgelig fordi der er sed-metategn, /, i udtrykket
# Prøv i stedet at manipulere din variabel således i dit script:

$ FIL1=`echo $FIL | awk -F/ '{print $1 "\\\\/" $2 "\\\\/" $3 "\\\\/" $4}'`
$ echo $FIL1
\/test\/dir\/minfil
$ cat fil1 | sed "s/^/$FIL1/"
/test/dir/minfiltest1
/test/dir/minfiltest2
/test/dir/minfiltest3
$
# NB $1 er tom hvis første tegn i variablen er en /

Med venlig hilsen
Niels Muller Larsen
Underviser
Center for Videregående Uddannelser
Århus Købmandsskole