Anzeige:
Ergebnis 1 bis 6 von 6

Thema: Wie <Zahl>: am Zeilenanfang löschen?

  1. #1
    Registrierter Benutzer
    Registriert seit
    02.09.2006
    Beiträge
    120

    Question Wie <Zahl>: am Zeilenanfang löschen?

    Ein

    DATE=$(date +%s)
    LOGFILE=$DATE.log
    hwinfo --all -dump-db 1 > $LOGFILE
    sed -i '/IRQ:/d' $LOGFILE

    liefert mir zwar schöne Logfiles mit denen ich Änderungen der Hardware durch ein diff der Logfiles gut erkennen kann, aber bei jedem Eintrag ist am Zeilenanfang ein

    <Zahl>:

    und damit bekomme ich mit einer zusätzlichen Komponente auch alle nachfolgenden von diff gemeldet, nur weil sich deren Nr. erhöht hat.
    Deshalb soll die Zahl mit dem Doppelpunkt am Zeilenanfang aus $LOGFILE gelöscht werden.
    Wie bekommt man das hin?

  2. #2
    Registrierter Benutzer
    Registriert seit
    07.05.2007
    Beiträge
    656
    Moin,

    nutze Regex ;-)

    Um jede Zahl bis zum Doppelpunkt zu löschen, kannst Du sowas benutzen:
    Code:
    jan@jack:~/tmp> echo "123: blablubb" | sed 's/[0-9]*: *//'
    blablubb
    Das kannst Du problemlos in Deinen existierenden sed einbauen - einfach das neue Kommando mit Semikolon anhängen.

    Jan

  3. #3
    Registrierter Benutzer
    Registriert seit
    02.09.2006
    Beiträge
    120
    Ok, funktioniert, danke

  4. #4
    Registrierter Benutzer
    Registriert seit
    02.09.2006
    Beiträge
    120
    Also das funktioniert noch nicht ganz, denn es werden immer ALLE Doppelpunkte gelöscht!
    Wie kann man das verhindern?
    Versucht habe ich schon ein Quoten vom Doppelpunkt mittels Backslash, aber ohne Erfolg.

  5. #5
    Registrierter Benutzer
    Registriert seit
    14.01.2002
    Beiträge
    657
    ich empfehle sowas hier:

    echo "123: test" | perl -npe 's/^\d+:\s*//'


    das problem ist, dass jan nicht überprüft ob die zahl wirklich am zeilenanfang steht, deswegen muss noch das ^ rein.
    zahlen kann man in reg. ausdrücken mit \d matchen man muss nicht [0-9] angeben. außerdem empfielt sich
    für white space zeichen ein \s. wenn du white space zeichen erhalten möchtest mach einfach das \s* raus.
    perl ist die modernere variante von sed und ist auch super unter anderen system zu nutzen (zB windows etc),
    deswegen empfehle ich perl anstatt sed zu verwenden.
    Geändert von msi (30-01-2010 um 19:51 Uhr)

  6. #6
    Registrierter Benutzer
    Registriert seit
    02.09.2006
    Beiträge
    120
    Aha, danke

    Probiert hatte ich auch schon Varianten wie

    echo "123: test" | sed 's/\d{6-1}: *//'

    aber von denen funktionierte keine.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •