Ubuntu Zeilen Löschen aus .txt Datei
Hallo
ich habe hier noch ein Problem mit dem auslesen und löschen von Zeilen in einem Logfile
Zum Problem:
Die zeilen Anzahl des Logfiles BachupLog.txt (Der Schreibfehler ist richtig so) soll eingelesen werden und auf eine länge von 150 Zeilen gekürst werden wenn er länger ist als 150 Zeilen.
Die Shell geht bis zum punkt: zeilen_gesamt=$(sed -n '$=' $LOG) und wertet diese auch aus aber dann bricht das Programm ab. Habe schon eine weile rum probiert aber komme nicht auf den Fehler. Unter dem CODE hänge ich mal Bilder an.
Hier mal eine test shell:
bis hier kommt die shell wenn ich es laufen lasse dann kommt fehler in Zeile 97 und er hat dann auch nichts getan.
Ich hoffe es kann mir jemand helfen!
Die zeilen Anzahl des Logfiles BachupLog.txt (Der Schreibfehler ist richtig so) soll eingelesen werden und auf eine länge von 150 Zeilen gekürst werden wenn er länger ist als 150 Zeilen.
Die Shell geht bis zum punkt: zeilen_gesamt=$(sed -n '$=' $LOG) und wertet diese auch aus aber dann bricht das Programm ab. Habe schon eine weile rum probiert aber komme nicht auf den Fehler. Unter dem CODE hänge ich mal Bilder an.
Hier mal eine test shell:
01.
#!/bin/bash -x 02.
# Sicherungsscript.sh 03.
#*****************************************# 04.
#*** BackupScript ***# 05.
#*** 00.03.2012 ***# 06.
#*** V.0.1Linux A. Schmidt ***# 07.
#*****************************************# 08.
DATE=$(date +%Y.%m.%d) 09.
TIME=$(date +%H:%M) 10.
#Variable DATE und TIME erstellen 11.
####################################################### 12.
LOG=/home/administrator/BachupLog1.txt 13.
zeilen_max=150 14.
zeilen_gesamt=$(sed -n '$=' $LOG)bis hier kommt die shell wenn ich es laufen lasse dann kommt fehler in Zeile 97 und er hat dann auch nichts getan.
01.
if [ $zeilen_gesamt -gt 150 ]; 02.
then 03.
echo "#################hinter if###############" >> $LOG 04.
let zeilen_loeschen=$zeilen_gesamt-$zeilen_max 05.
sed -i "1,${zeilen_loeschen}d" $LOG 06.
echo "#############Prüfung der Länge wurde durchgeführt############ >> $LOG 07.
fi 08.
#####################################################Ich hoffe es kann mir jemand helfen!
4 Kommentare Diskussionsverlauf
- bastla schreibt am 25.03.2012 um 18:27:58 Uhr
- hmarkus schreibt am 25.03.2012 um 19:52:36 Uhr
- Lochkartenstanzer schreibt am 25.03.2012 um 20:51:56 Uhr
- racer1601 schreibt am 28.03.2012 um 12:32:57 Uhr
hmarkus am 25.03.2012 um 19:52 Uhr
Hallo auch in diesem Thread zum ähnlichen Thema 
Vielleicht ist sed ein bisschen zu kompliziert für solch einfachen Dinge.
Zeilenzahl der Datei
zu löschende Zeilen (Anzahl)
und dann sollte Dein Code für sed eigentlich funktionieren
Markus
Vielleicht ist sed ein bisschen zu kompliziert für solch einfachen Dinge.
Zeilenzahl der Datei
lines=`wc -l $LOG | cut -d " " -f 1` linestodelete=`expr $lines - 150`sed -i "1,$linestodelete d" $LOGMarkus
Lochkartenstanzer am 25.03.2012 um 20:51 Uhr
Ich würd' s so lösen:
lks
tail -n $zeilen_max $LOG >$tempfile mv $tempfile $LOGlks









