Zeilen in Datei löschen, ohne sie neu erstellen zu müssen

C

cmg

Mitglied
Hi,
ich lösche momentan mit sed ein paar Zeilen aus der /etc/fetchmailrc.
Das sed ist mit ein paar anderen Sachen in einem Shell-Script.
Der Benutzer der das Script ausführt ist ein ganz normaler lokaler Benutzer.

Ich habe nun ein kleines Rechte-Problem, weil die fetchmailrc normalweise nicht editieren kann, obwohl das Script das muss. Ich habe nun fetchmailrc Rechte gegeben, damit mein Script diese Datei editieren kann.

Problem ist nun noch das Löschen von Zeilen, weil ich dafür ja quasi eine neue Datei erstellen muss, und das geht natürlich nicht in /etc/. Ich will auch nicht noch weiter die Rechte für den lokalen Benutzer ausweiten.

Momenten lösche ich so: sed '23 d' fetchmailrc > f.txt
rm fetchmailrc
mv f.txt fetchmailrc

Frage ist nun, gibts entweder was damit ich keine neuen Dateien erstellen muss beim Löschen von Zeilen. Oder bekomm ich das mit den Rechten irgendwie besser in den Griff?
 
Wenn du komplette Zeilen löschen willst, schau dir doch mal grep - und da genauer den Switch -v - an. Vielleicht hilft dir das ja weiter. :)
 
Ja, nur per grep habe ich ja das selbe Problem, nämlich eine zweite Datei...
 
Hi,
ich lösche momentan mit sed ein paar Zeilen aus der /etc/fetchmailrc.
Das sed ist mit ein paar anderen Sachen in einem Shell-Script.
Der Benutzer der das Script ausführt ist ein ganz normaler lokaler Benutzer.

Ich habe nun ein kleines Rechte-Problem, weil die fetchmailrc normalweise nicht editieren kann, obwohl das Script das muss. Ich habe nun fetchmailrc Rechte gegeben, damit mein Script diese Datei editieren kann.

Problem ist nun noch das Löschen von Zeilen, weil ich dafür ja quasi eine neue Datei erstellen muss, und das geht natürlich nicht in /etc/. Ich will auch nicht noch weiter die Rechte für den lokalen Benutzer ausweiten.

Momenten lösche ich so: sed '23 d' fetchmailrc > f.txt
rm fetchmailrc
mv f.txt fetchmailrc

Frage ist nun, gibts entweder was damit ich keine neuen Dateien erstellen muss beim Löschen von Zeilen. Oder bekomm ich das mit den Rechten irgendwie besser in den Griff?
Um bei deinem Ansatz zu bleiben:
Code:
fname=`date +%s%N`
sed '23 d' fetchmailrc > /tmp/fetchmail$fname
cat /tmp/fetchmail$fname > fetchmailrc
rm /tmp/fetchmail$fname
 

Ähnliche Themen

3 letzte Zeile löschen oder ab Zeile 55 Muster suchen und löschen

Zeilenweise suchen, löschen und ersetzen / Inhalt einfügen

CSV Datei mit sed manipulieren/optimieren/ergänzen

Neue Zeilen in der Datei

Neue ausführbare Datei mit Datensätzen aus einer Datei und Variablen erstellen

Zurück
Oben