sed och variabler

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
oden
Inlägg: 5
Blev medlem: 08 jan 2007, 01:47

sed och variabler

Inlägg 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
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

SV: sed och variabler

Inlägg 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
oden
Inlägg: 5
Blev medlem: 08 jan 2007, 01:47

SV: sed och variabler

Inlägg 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...
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

SV: sed och variabler

Inlägg 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
oden
Inlägg: 5
Blev medlem: 08 jan 2007, 01:47

SV: sed och variabler

Inlägg av oden »

Ok, fin genomgång, tack så mycket för hjälpen!
Skriv svar

Återgå till "Terminalforum"