sed

Post Reply
Message
Author
pischti
Posts: 27
Joined: 05. Mar 2002 10:13

sed

#1 Post by pischti »

hallo,
ich hab mich mit dem befehl sed beschäftigt, der ja ne ganze menge macht ...
nun hab ich aber ein problem:

ich möchte eine zeile aus einem text-file löschen

Var="/home/users/test"

sed /$Var/d datei1 > datei2

das klappt aber nicht, da in dem string ja ein (oder mehrere) / drinstehen.
ich hab mir da schon ein paar beispiele angeschaut, die waren aber nur für ersetzten gedacht. kann mir jemand eine lösung veraten?

ach noch was:
kann ich in der datei (datei1) gleich löschen und nicht erst den umweg über eine zweite datei (datei2) gehen ...
_________________________
gruss pischti
------- debian testing

bernd

Re: sed

#2 Post by bernd »

probiersmal :


sed 's/'$Var'/d/' datei1 > datei2

Jochen

Re: sed

#3 Post by Jochen »

bernds Lösung tut's leider nicht, da hier kein typisches Quoting-Problem der Shell vorliegt. Ausserdem bleibt bei einem Substitute-Kommando immer eine Leerzeile übrig.

Meine Lösung wäre:<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
RE=$(echo "$VAR" | sed -e 's-/-\<!--no-->\<!--no-->/-g')
sed -e "$RE/d" datei1 > datei2
</font><hr></pre></blockquote>
In RE wird der Dateiname mit entwerteten "/" gespeichert und daraus dann das sed-Kommando gebastelt, dass die Zeilen aus der Eingabe rauswirft. Wenn Du nicht mit Temporär-Dateien arbeiten willst, wirst Du perl statt sed verwenden müssen; da fehlt mir jetzt aber das exakte Kommando.

Jochen

Post Reply