Per bash Zeilen aus einer Datei löschen ?

Post Reply
Message
Author
Sebastian Pfohl

Per bash Zeilen aus einer Datei löschen ?

#1 Post by Sebastian Pfohl »

Kann mir bitte jemand hier verraten wie ich mittels einer bash (is fürn script) verschiedene Zeilen aus einer Datei löschen kann ?
N Beispiel wäre sehr schön ...

Jochen

Re: Per bash Zeilen aus einer Datei löschen ?

#2 Post by Jochen »

Direkt aus einer Datei herauslöschen ist schwierig, da gibt es m.E. kein Standard-Kommando für. Wenn es Dir reicht, dass man beim Auslesen der Datei die entsprechenden Zeilen ausfiltert und das Ergebnis unter dem alten Namen abspeichert, kann man wie folgt vorgehen:

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
#!/bin/bash
# Skript: filterout

if [ $# -eq 0 ] ; then
echo "Usage: $0 file [ file ... ]" >&2
exit 2
fi

ERROR_OCCURED=0

for ARG ; do
if sed '/RA-der-zu-löschende-zeilen-beschreibt/d' "$ARG" > "$ARG.$$" ; then
mv "$ARG.$$" "$ARG"
else
echo "$0: Error while deleting lines - no change to original file \<!--no-->"$ARG\<!--no-->"!" >&2
rm -f "$ARG.$$"
ERROR_OCCURED=1
fi
done

exit $ERROR_OCCURED
</font><hr></pre></blockquote>

Rückgabewerte sind 0 bei Erfolg, 1 bei Fehlern im Zeilenfiltern bei mind. einer Datei und 2 bei falschem Aufruf (ohne Parameter).

Das sed-Kommando kannst Du auch (falls Du Dich mit sed nicht wohlfühlst) durch ein

grep -v 'regulaerer-Ausdruck'

ersetzen, oder durch ein

fgrep -v 'fixe-Zeichenkette'

oder im Falle des Falles auch durch den awk, da kann man schön nach den Werten einzelner Felder in einer Zeile operieren.

Viel Spass dabei!

Jochen

Sebastian Pfohl

Re: Per bash Zeilen aus einer Datei löschen ?

#3 Post by Sebastian Pfohl »

thx, klappt hervoragend mit grep ...

Post Reply