awk zeichenkette schneiden

Diskutiere awk zeichenkette schneiden im Shell-Skripte Forum im Bereich Programmieren unter Linux/Unix; moin an alle ich möchte gerne eine ZEichenkette mit dem awk teilen meine zeichenkette ist diese 6311_Events_stored_in_Event_test ich würde...

  1. #1 grechos, 11.08.2006
    grechos

    grechos Eroberer

    Dabei seit:
    12.05.2005
    Beiträge:
    54
    Zustimmungen:
    0
    moin an alle
    ich möchte gerne eine ZEichenkette mit dem awk teilen
    meine zeichenkette
    ist diese
    6311_Events_stored_in_Event_test
    ich würde nun mit awk gerne die ersten 4 zahlen aus dieser kette in eine Variable legen
    Ich kenn mich aber mit dem awk nicht so gut aus kann mir jemand helfen


    GRuß an alle die helfen wollen
     
  2. Anzeige

    Anzeige

    Wenn du mehr über Linux erfahren möchtest, dann solltest du dir mal folgende Shellkommandos anschauen.


    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Code:
    [~]$ echo 6311_Events_stored_in_Event_test | awk -F_ '{print $1}'
    6311
    
    Gruss, Xanti
     
  4. #3 grechos, 11.08.2006
    Zuletzt bearbeitet: 11.08.2006
    grechos

    grechos Eroberer

    Dabei seit:
    12.05.2005
    Beiträge:
    54
    Zustimmungen:
    0
    Hallo das war net schlecht
    aber ich habe es jetzt mal mit einer größeren kette probiert und ich kriege wieder meine grenzen gezeigt
    damit hab ich rumexperementiert

    ERROR;TrackIT.EventInboundQueue;19:21:20;11.08.2006;6610_Events_stored_in_Event_Inbound_Queue;19:21:20;11.08.2006 (20060811192128) TRACKIT MON-CLIENT


    von dieser kette wollte ich wieder die 6610 in eine VAriable speichern aber keine Chance

    weiß jemand noch einen RAT
     
  5. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Dann verkettest Du awk 2x hintereinander:
    echo Dein_langer_string | awk -F\; '{ print $5 }' | awk -F_ '{print $1}'
     
  6. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Einfach zuerst bei ; trennen und anschliessend bei _

    edit: rikola war schneller
     
  7. #6 grechos, 11.08.2006
    Zuletzt bearbeitet: 11.08.2006
    grechos

    grechos Eroberer

    Dabei seit:
    12.05.2005
    Beiträge:
    54
    Zustimmungen:
    0
    ich probiers und sach euch bescheid
    ich glaube eher morgen
     
  8. #7 Wolfgang, 11.08.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Warum nimmst du nicht sed, das ist viel effizienter und braucht nur einen Prozess.
    Code:
    $ sed --version
    GNU sed Version 4.1.4
    $ cat daten
    ERROR;TrackIT.EventInboundQueue;19:21:20;11.08.200 6;6610_Events_stored_in_Event_Inbound_Queue;19:21: 20;11.08.2006 (20060811192128)TRACKIT MON-CLIENT
    $ VAR=$(sed -e 's/.*;\([[:digit:]]*\)_.*/\1/g' daten)
    $ echo $VAR
    [b]6610[/b]
    
    Eventuell ein
    Code:
    while read <daten; do
    VAR=$(sed -e 's/.*;\([[:digit:]]*\)_.*/\1/g' daten);
    echo $VAR;
    # weiteres
    done
    
    Gruß Wolfgang
     
  9. #8 MarcelWie, 18.08.2006
    MarcelWie

    MarcelWie Jungspund

    Dabei seit:
    18.08.2006
    Beiträge:
    17
    Zustimmungen:
    0
    Hallo,

    ich habe mal eine Kleine Frage.
    Ich habe eine Datei die folgendermaßen aussieht:

    Code:
    SERVICE,DASI,VNC Service,WinVNC: Stopped
    SERVICE,DASI,DNS Server,Stopped
    ...
    Wie ich das nun zerschneide ist mir klar (awk -F, '{print $1}'.
    Was ich aber nun möchte ist das er Jeden Wert in eine bestimmte Variable schreibt z.B. Service in $Wert1, DASI in $WERT2 usw. Muss ich dann in einem Shell Script mehrmals AWK aufrufen bis er alles bearbeitet hat, oder kann man das auch in einem Aufruf starten?
    Zudem müsste er nach dem abarbeiten der ersten Zeile diese löschen so das Zeile 2 an die Stelle von Zeile 1 rückt.
    Könnte mir jemand vllt den Aufruf erstellen? Am besten noch mit ner kleine Erklärung dann muss ich nicht andauernd fragen :D

    MfG

    Marcel
     
  10. dizzgo

    dizzgo Lernbereite Riesenratte

    Dabei seit:
    04.08.2005
    Beiträge:
    573
    Zustimmungen:
    0
    Ort:
    /ch/sg///
    Hallo zusammen,

    um nicht immer gleich 'awk' zu bemühen, cut leistet beim Stringschnippeln auch ganz gute Dienste und die Syntax ist nicht ganz so komplex wie die von 'awk'.

    Gruss
    d22
     
  11. #10 Wolfgang, 18.08.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Verwende dazu einfach while read.
    Auch die Shell kennt einen Feldseperator, der in der Umgebungsvariable IFS zu finden und zu setzen ist.
    Code:
    $ IFS=,;
    $ cat testdatei|while read V1 V2 V3 V4;
     do
     echo "\$V1 hat den Wert $V1";
     echo "\$V2 hat den Wert $V2";
     done
    
    $V1 hat den Wert SERVICE
    $V2 hat den Wert DASI
    $V1 hat den Wert SERVICE
    $V2 hat den Wert DASI
    
    Wir setzen IFS auf ,
    Dann verfüttern wir die Ausgabe an die while read Schleife.
    read weist den Variablen V1 bis V4 die Werte zu.
    Gibt es mehr Werte als Variablen angegeben werden, steckt der Rest in der letzten Variable -> hier V4
    man read
    HTH
    Gruß Wolfgang
     
  12. #11 MarcelWie, 18.08.2006
    MarcelWie

    MarcelWie Jungspund

    Dabei seit:
    18.08.2006
    Beiträge:
    17
    Zustimmungen:
    0
    Danke Wolfgang für die Mühe aber sicher das Read mein Problem lösst?
    Weil das was du gepostet hattest bezieht sich ja auf alle Zeilen in der Datei. Es darf aber nur um die erste gehen. Zudem muss ja nach dem auslesen die 1. Zeile gelöscht werden und die folgenden müssen aufrücken.

    MfG

    Marcel
     
  13. #12 Wolfgang, 18.08.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Genau das passiert bei jeder Zeile.
    Statt echo kannst du natürlich deine Verarbeitung der Variablen einbinden.
    read liest solange die Daten ein und initialisiert die Variablen, bis das Ende der Datei erreicht wird.
    awk macht das auch nicht anders, ist aber langsamer dabei, und verbraucht einen zusätzlichen Prozess.

    Was willst du mit den Werten machen?
    Willst du die Datei selbst bearbeiten?

    Gruß Wolfgang
     
  14. #13 Wolfgang, 18.08.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Also nochmal: Wenn du die Datei nur um die erste Zeile kürzen willst, nachdem du die Daten nur aus der ersten Zeile verarbeitet hast...
    Code:
    IFS=,;head -n1 test|while read v1 v2 v3 v4; do echo "$v1 $v2 $v3 $v4"; sed -i -ne '1!p' datei; done
    Das liest die erste Zeile, speichert die Werte und löscht anschließend die erste Zeile mit GNU sed (Option -i)

    Solltest du kein GNU sed haben, dann musst du die Ausgabe in eine Temporäre Datei umleiten und anschließend umkopieren.
    sed -i -ne '1!p' datei >temp&& cat temp>datei&& rm -f temp;
    Hoffe das habe ich diesmal richtig verstanden.
    ;)
    Gruß Wolfgang
     
  15. #14 MarcelWie, 21.08.2006
    MarcelWie

    MarcelWie Jungspund

    Dabei seit:
    18.08.2006
    Beiträge:
    17
    Zustimmungen:
    0
    Perfekt so sollte es sein ;)
    Ich bedanke mich :D

    Aber eine Frage habe ich noch. Muss ich mein Script in diese While schleife einfügen. Oder gibt es auch ne Möglichkeit ohne diese Schleife.

    Wenn ich es so probiere:
    Code:
    IFS=,;
    head -n1 errors.msg|read v1 v2 v3 v4
    echo $v1
    funktioniert es natürlich nicht. Warum kann ich natürlich nicht sagen da meine Uinux Scripting Künste doch recht bescheiden sind ;)

    MfG

    Marcel
     
  16. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Vielleicht solltest Du einfach mal schreiben, was Du genau machen willst. Wo ist das Problem mit der while-Schleife? Die wird benötigt, damit jede Zeile bearbeitet wird. Ohne while-Schleife wird nur die erste Zeile bearbeitet.

    Gruss, Xanti
     
Thema: awk zeichenkette schneiden
Besucher kamen mit folgenden Suchen
  1. awk zeichenkette abschneiden

    ,
  2. awk string ausschneiden

    ,
  3. awk zeichen abschneiden

    ,
  4. awk erstes zeichen,
  5. awk abschneiden,
  6. awk letztes zeichen eine Zeile entfernen,
  7. awk feld kürzen,
  8. string mit awk trennen bash ubuntu,
  9. unix awk string suchen,
  10. kürzen von zeilen mit awk,
  11. linux kürzen von zeilen,
  12. unix shell letzte zeichen entfernen,
  13. gawk von rechts zeichen,
  14. linux zeichenkette extrahieren,
  15. bash zeichen entfernen,
  16. awk nach letztem doppelpunkt abschneiden,
  17. linux Zeichen aus String extrahieren,
  18. unix letzte zeile abschneiden,
  19. linux ab zeichenkette abschneiden,
  20. shell zeichenkette abschneiden nach tab,
  21. linux steam ab trennzeichen abschneiden,
  22. awk ziffern extrahieren,
  23. shell awk letztes zeichen entfernen,
  24. sed alles ab zeichen löschen,
  25. awk zeichen entfernen
Die Seite wird geladen...

awk zeichenkette schneiden - Ähnliche Themen

  1. Zeichenkette per Shellskript ausschneiden

    Zeichenkette per Shellskript ausschneiden: Hallo, habe folgendes Problem : Ich möchte Dateien in Unterordner verschieben, abhängig von einer Zeichenkette im Dateinamen. Beispiel:...
  2. Zeichenkette abschneiden

    Zeichenkette abschneiden: Hi Community, folgendes: Ich würde gerne Verzeichnisnamen umbenennen. Die Verzeichnisse werden automatisch erstellt, dynamisch benannt und enden...
  3. sed, awk oder cut : Zeichen innerhalb einer Zeichenkette kopieren

    sed, awk oder cut : Zeichen innerhalb einer Zeichenkette kopieren: Hallo Unixboard :) Ich möchte gerne in der shell die Ausgabe eines Befehls modifizieren. Sodass innerhalb einer Zeile ein Teil der Zeile noch an...
  4. sed? Zeichenkette ersetzen 1:2:17 zu 1:02:17

    sed? Zeichenkette ersetzen 1:2:17 zu 1:02:17: Hallo, ich ahne, dass sed wohl meine Lösung bereitstellen kann, aber weiss nicht, wie ich hierzu damit arbeiten muss. Es dreht sich um...
  5. Zeichenkette per Skript an shell übergeben

    Zeichenkette per Skript an shell übergeben: [gelöst]Zeichenkette per Skript an shell übergeben Hallo Leute, sitze momentan etwas ratlos vor einem Shell-Skript (Bin kompletter Anfänger...
  1. Diese Seite verwendet Cookies um Inhalte zu personalisieren. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Mit dem weiteren Aufenthalt akzeptierst du diesen Einsatz von Cookies.
    Information ausblenden