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
sed och variabler
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
SV: sed och variabler
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:
I ditt fall något i stil med:
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/'
Kod: Markera allt
user=frankrike
sed -i "s/$user.*/& humbug/" passwd
SV: sed och variabler
Wow det funkade! Tack så jätte mycket! 
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...

Måste bara gå igenom det här så att jag kan göra om det här själv senare!sed -i "s/$user.*/& humbug/" passwd
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...
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
SV: sed och variabler
-ioden skrev: I är för att skriva tillbaka till filen som jag söker i alltså inte skicka till stdpoutput,
s står för substitute, dvs att ersätta det som matchas medoden skrev: s för att söka,
någonting annat.
Stämmer bra.oden skrev: " för att Bash ska hinna översätta variablerna innan sed tar tag i det hela!?
& är en bakåtreferens. Den byts ut mot det som matchades.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...
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
Ok, fin genomgång, tack så mycket för hjälpen!