racer1601
Goto Top

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:
#!/bin/bash -x
# Sicherungsscript.sh
#*****************************************#
#***           BackupScript            ***#
#***            00.03.2012             ***#
#***       V.0.1Linux A. Schmidt       ***#
#*****************************************#
DATE=$(date +%Y.%m.%d)
TIME=$(date +%H:%M)
#Variable DATE und TIME erstellen
#######################################################
LOG=/home/administrator/BachupLog1.txt
zeilen_max=150
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.

if [ $zeilen_gesamt -gt 150 ];
    then
         echo "#################hinter if###############" >> $LOG  
         let zeilen_loeschen=$zeilen_gesamt-$zeilen_max
         sed -i "1,${zeilen_loeschen}d" $LOG  
         echo "#############Prüfung der Länge wurde durchgeführt############ >> $LOG  
fi
#####################################################

Ich hoffe es kann mir jemand helfen!

1847732db470e5d196cc74d3d698b757

d2ad641d02be37dd35a12849ef3c498c

Content-ID: 182560

Url: https://administrator.de/contentid/182560

Ausgedruckt am: 19.11.2024 um 22:11 Uhr

bastla
bastla 25.03.2012 um 18:27:58 Uhr
Goto Top
Hallo racer1601!

Wäre nicht eher "head tail" das, was Du suchst?

Grüße
bastla
64748
64748 25.03.2012 um 19:52:36 Uhr
Goto Top
Hallo auch in diesem Thread zum ähnlichen Thema face-wink

Vielleicht ist sed ein bisschen zu kompliziert für solch einfachen Dinge.

Zeilenzahl der Datei
lines=`wc -l $LOG | cut -d " " -f 1` 
zu löschende Zeilen (Anzahl)
linestodelete=`expr $lines - 150`
und dann sollte Dein Code für sed eigentlich funktionieren
sed -i "1,$linestodelete d" $LOG


Markus
Lochkartenstanzer
Lochkartenstanzer 25.03.2012 um 20:51:56 Uhr
Goto Top
Ich würd' s so lösen:

tail -n $zeilen_max  $LOG >$tempfile
mv $tempfile $LOG

lks
racer1601
racer1601 28.03.2012 um 12:32:57 Uhr
Goto Top
Danke euch beiden geht jetzt alles!

Alex