Anzeige:
Ergebnis 1 bis 5 von 5

Thema: [sed]String ausschneiden

  1. #1
    Registrierter Benutzer
    Registriert seit
    25.11.2003
    Beiträge
    16

    [sed]String ausschneiden

    Hallo zusammen,

    ich möchte aus einem logfile ein paar werte herausholen. das logfile ist das quake3 server log, rein zu info. als info möchte ich die spieler namen wissen die im logfile auftauchen.

    logfile auszug:
    Code:
     
    3910:12ClientConnect: 4
    3910:12ClientUserinfoChanged: 4 n\Razor\t\1\model\razor\hmodel\razor\c1\4\c2\5\hc\70\w\0\l\0\skill\    2 00\tt\1\tl\0
    3910:12ClientBegin: 4
    3910:19Item: 10 item_armor_combat
    3910:19Item: 12 item_health_small
    3910:19Item: 13 item_armor_combat
    3910:19Item: 3 weapon_plasmagun
    3910:19Item: 11 weapon_plasmagun
    3910:21Item: 14 weapon_railgun
    als information möchte ich "Razor" aus der zweiten zeile ausschneiden.
    mein erste versuch dabei war:

    cat games.log | sed -e 's/.*ClientUserinfo.*n\\\(.*\)\\t\\.*/\1\n/'

    dabei wird in den entsprechenden zeilen der name richtig ausgeschnitten, nur alle anderen zeilen auch vollstandig mit ausgeben. welches flag muß ich setzten damit nur der ausgeschnittene Username angezeigt wird und der ganze andere mist nicht mehr??

    Axion

  2. #2
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Code:
    cat games.log | grep ClientUserinfoChanged | sed -e 's/.*ClientUserinfo.*n\\\(.*\)\\t\\.*/\1\n/'
    oder auch nur mit sed:
    Code:
    cat games.log | sed -n -e 's/.*ClientUserinfo.*n\\\(.*\)\\t\\.*/\1\n/p'
    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  3. #3
    Registrierter Benutzer
    Registriert seit
    25.11.2003
    Beiträge
    16
    Danke für die Hilfe es funktioniert jetzt 1a. Aber jetzt bin ich an einem anderen Problem dran:

    Code:
     TEST=`cat games.log.save.ctf | sed -n -e "s/.*ClientUserinfo.*n\\\(.*\)\\t\\.*/\1/p" | sort -f | uniq -i`
    Der Befehl läuft ohne Fehlermeldungen durch nur am Schluß ist die Variable TEST leer. Kann mir jemand sagen welche Hochkommas ich verwenden muss damit die Ausgabe in die Variable TEST geschrieben wird? Auf der Konsole läuft der Befehl ohne Probleme durch und liefert auch die gewünschte ausgabe.

  4. #4
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Also die Codezeile so von dir geht irgendwie nicht, jault was wegen Sed und Klammern. Egal.

    Die ` ` sind schon richtig. Alternativ auch $():
    Code:
    peschmae@thinkpad:/tmp$ TEST=$(cat daten.txt | sed -n -e 's/.*ClientUserinfo.*n\\\(.*\)\\t\\.*/\1\n/p' | sort -f | uniq -i) 
    peschmae@thinkpad:/tmp$ echo $TEST
    Razor
    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  5. #5
    Registrierter Benutzer
    Registriert seit
    25.11.2003
    Beiträge
    16
    also mit klammern hab ich es noch nicht versucht und schon wieder was gelernt. zu meiner geposteten version, ich hab sie grad mit copy and paste ausgeführt und es treten bei mir keine fehlermeldungen auf *komisch*.

Lesezeichen

Berechtigungen

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