Sida 1 av 1

sed och variabler

Postat: 27 jul 2007, 22:50
av oden
Hej

Håller på med tldp fortfarande... Tydligen har jag inte snappat alla klurigheter med sed än för jag kan inte lägga till info i slutet på en rad som jag söker upp i passwd filen. Hoppas att någon snäll själ här vill hjälpa mig!

#!/bin/bash
user=frankrike
PasswdUser=`grep $user passwd`
echo
echo
echo "$PasswdUser"
UserAppend="$PasswdUser humbug"
echo "$UserAppend"
echo
echo
sed -i -e "s/$PasswdUser/$UserAppend/g" passwd

SV: sed och variabler

Postat: 29 jul 2007, 21:32
av Konservburk
Jag förstår inte riktigt vad du försöker göra,
men så här lägger man till något sist på en
matchad rad:

Kod: Markera allt

sed 's/din matchning.*/&det som ska läggas till/'
I ditt fall något i stil med:

Kod: Markera allt

user=frankrike
sed -i "s/$user.*/& humbug/" passwd

SV: sed och variabler

Postat: 29 jul 2007, 22:45
av oden
Wow det funkade! Tack så jätte mycket! :)
sed -i "s/$user.*/& humbug/" passwd
Måste bara gå igenom det här så att jag kan göra om det här själv senare!
I är för att skriva tillbaka till filen som jag söker i alltså inte skicka till stdpoutput, s för att söka, " för att Bash ska hinna översätta variablerna innan sed tar tag i det hela!?

Men vad betyder & i detta fall? Jag kan ju se vad som händer men hittar inte i min referens till regular expressions vad det betyder...

SV: sed och variabler

Postat: 29 jul 2007, 23:38
av Konservburk
oden skrev: I är för att skriva tillbaka till filen som jag söker i alltså inte skicka till stdpoutput,
-i
oden skrev: s för att söka,
s står för substitute, dvs att ersätta det som matchas med
någonting annat.
oden skrev: " för att Bash ska hinna översätta variablerna innan sed tar tag i det hela!?
Stämmer bra.
oden skrev: Men vad betyder & i detta fall? Jag kan ju se vad som händer men hittar inte i min referens till regular expressions vad det betyder...
& är en bakåtreferens. Den byts ut mot det som matchades.

Jämför med att lägga till det hela först på den matchade raden:

Kod: Markera allt

sed -i "s/.*$user/humbug &/" passwd

SV: sed och variabler

Postat: 30 jul 2007, 11:28
av oden
Ok, fin genomgång, tack så mycket för hjälpen!