scheuri: Hilfe bei awk: auslesen eines strings nach einem pattern

Hallo allerseits

Ich benötige Starthilfe für ein awk-scriptchen (ich denke, awk sollte das Problem lösen können)....von alleine komme ich trotz einiger Recherchen leider nicht auf eine Idee.

Ich habe Dateien (Access-Logs), welche für jeden Access einer IP einen entsprechenden Eintrag macht. Leider sind diese Logs nicht einheitlich aufgebaut und auch nicht gleich "gross".

Der Ansatz mit "print $xx" die entsprechende Spalte mit der IP anzusprechend schlägt entsprechend fehl.

Aber...jede IP-Angabe in jedem Logeintrag beginnt mit "ip:" (ohne die "" natürlich).

Wie kann ich awk nun dazu bringen mir für jeden "ip:"-Eintrag die nächsten 14 Zeichen auszulesen - was der IP entsprechen würde?

Tausend Dank für die Hilfe...

  1. Ich benötige Starthilfe für ein awk-scriptchen (ich denke, awk sollte das Problem lösen können)....von alleine komme ich trotz einiger Recherchen leider nicht auf eine Idee.

    Ich habe Dateien (Access-Logs), welche für jeden Access einer IP einen entsprechenden Eintrag macht. Leider sind diese Logs nicht einheitlich aufgebaut und auch nicht gleich "gross".

    Der Ansatz mit "print $xx" die entsprechende Spalte mit der IP anzusprechend schlägt entsprechend fehl.

    Aber...jede IP-Angabe in jedem Logeintrag beginnt mit "ip:" (ohne die "" natürlich).

    Wie kann ich awk nun dazu bringen mir für jeden "ip:"-Eintrag die nächsten 14 Zeichen auszulesen - was der IP entsprechen würde?

    http://www.math.utah.edu/docs/info/gawk_5.html
    nennt {n} {n,n} als Operatoren

    mfg Beat

    --
    Woran ich arbeite:
    X-Torah
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
  2. gudn tach!

    verflucht! ich hab doch gestern auch geantwortet... und offenbar wieder die vorschau vergessen zu bestaetigen.

    auch wenn die Beat nun anscheinend bereits die antwort gegeben hat, will ich meine noch mal posten.

    Wie kann ich awk nun dazu bringen mir für jeden "ip:"-Eintrag die nächsten 14 Zeichen auszulesen - was der IP entsprechen würde?

    wo awk ist, ist meist auch perl und damit waer's dann z.b. via
      perl -ne 'print $1."\n" if /ip:(.{14})/;' datei
    im cli unter linux zu bewerkstelligen.

    pipet man dahinter noch "sort -u" wird die ausgabe sortiert und doppelte werden rausgeschmissen.

    prost
    seth