• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Zeilen ersetzen mit SED

hannesj

Newbie
Hallo allerseits

Ich stehe vor folgenden Problem:

In einer Datei steht folgende Zeile

domain / /var /home

Ich möchte nun den Eintrag "/home" ersetzen durch bspw. "/drbd". In der Zeile gibt's nach dem Eintrag "domain" leider einige Leerzeichen und die Slashes. Wie kann ich dies bewerkstelligen?

Besten Dank.
HannesJ
 

Pumphaus

Member
Simples Beispiel:
Code:
echo "domain / /var /home" | sed "s/\\/home/\/drbd/"
Die Slashes musst du escapen, sonst werden die falsch interpretiert.
 
Pumphaus schrieb:
Simples Beispiel:
Code:
echo "domain / /var /home" | sed "s/\\/home/\/drbd/"
Die Slashes musst du escapen, sonst werden die falsch interpretiert.
Ersetzt aber alle /home, sicher wollte der OP es aber nur in der vierten Spalte haben und exakt /home treffen und nicht .*/home.*
 

Pumphaus

Member
jengelh schrieb:
Pumphaus schrieb:
Simples Beispiel:
Code:
echo "domain / /var /home" | sed "s/\\/home/\/drbd/"
Die Slashes musst du escapen, sonst werden die falsch interpretiert.
Ersetzt aber alle /home, sicher wollte der OP es aber nur in der vierten Spalte haben und exakt /home treffen und nicht .*/home.*

Dann wäre diese Variante besser:
Code:
echo "domain / /var /home" | sed "s/\\/home$/\/drbd/"
Das $ zeigt an, nur /home am ende der zeile zu "treffen".
 

}-Tux-{

Hacker
Pumphaus schrieb:
Simples Beispiel:
Code:
echo "domain / /var /home" | sed "s/\\/home/\/drbd/"
Die Slashes musst du escapen, sonst werden die falsch interpretiert.
Nicht unbedingt
Code:
sed -e 's|/blablup|/foo/bar|'

Cheers }-Tux-{
 
Oben