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 ...
sed
Re: sed
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
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