Wie groß ist die letzte Zahl einer Zeile

Hallo zusammen,

ich stehe auf dem Schlauch. Ich habe ein Apache-log so konfiguriert, dass die letzte Spalte die Zeit enthält, die der Indianer gebraucht hat, um das auszuliefern. Nun hätte ich gerne alle Zeilen, in denen diese letzte Zahl größer als 1 ist. Mit grep komme ich nicht weiter, da es das nicht kann (oder doch?). Ich könnte natürlich ein Perl-Skript schreiben. Lieber wäre mir aber eine Kommandozeile.

Liebe Grüße

Erik

erikro wrote:
> ich stehe auf dem Schlauch. Ich habe ein Apache-log so konfiguriert,
> dass die letzte Spalte die Zeit enthält, die der Indianer gebraucht hat,
> um das auszuliefern. Nun hätte ich gerne alle Zeilen, in denen diese
> letzte Zahl größer als 1 ist. Mit grep komme ich nicht weiter, da es das
> nicht kann (oder doch?). Ich könnte natürlich ein Perl-Skript schreiben.
> Lieber wäre mir aber eine Kommandozeile.
>

Huhu,

also ich würde das ganze dann spontan in ein sort schieben.
also ein sort -t <seperator> --key=<feld> , dann bekommst du eine Liste, und
kannst ja schauen welche Einträge an oberster Stelle stehen, also bis runter
zu deinem 1M.

Nur eine erste kleine Idee :slight_smile:

Grüsse

Hallo zusammen,

ich habe es jetzt doch mit Perl gelöst


#! /usr/bin/perl

use strict;

open(FILE,  "</var/log/apache2/access_log")|| die "Datei nicht gefunden";
foreach my $line (<FILE>) {

        my @content = split / /, $line;
        my $i = $#content;
        if($content$i] > $ARGV[0] ) {

                print $line . "
";
        }
}

Liebe Grüße

Erik

Moin moin,

wollte noch loswerden, das man es auch mit awk machen könnte:


cat access_log|awk '{if ($NF > 1)print $0}'

$NF ist der letzte Wert/Wort der Zeile; und wenn dieses grösser als “1” dann
schreibt er die gesamte Zeile (die in der Variablen $0 enthalten ist) raus.

Grüsse,

Hallo zusammen,

cool, sowas habe ich gesucht. Kommt aber leider zu spät. Der Bösewicht ist erkannt und eliminiert. :slight_smile:

Liebe Grüße

Erik