String mit awk oder sed verarbeiten

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von crizcroz, 21.06.2007.

  1. #1 crizcroz, 21.06.2007
    Zuletzt bearbeitet: 21.06.2007
    crizcroz

    crizcroz Grünschnabel

    Dabei seit:
    21.06.2007
    Beiträge:
    4
    Zustimmungen:
    0
    String mit awk oder sed verarbeiten [solved]

    Hallo,

    ich komme gerade mit einem speziellen Problem nicht weiter bzw. bin mit meiner Lösung äußerst unzufrieden, vielleicht könnt Ihr mir ja helfen.

    Ich will einen String der Form:
    Code:
    test12.abc.123,070621,072815
    so ausgeben lassen, dass er etwa so aussieht:

    Code:
    test12.abc.123   Datum: 21.06.07   Uhrzeit: 07:28:15
    Danke, schon einmal im Voraus!
    Chris
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Wolfgang, 21.06.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Welche Shell?
    Welches OS?
    GNU date
    bash:
    Code:
    D=$(date +"Datum:   %d.%m.%Y");
    T=$(date +"Uhrzeit:  %H:%M:%S");
    echo -e "test12.abc.123,2345,5879\t$D\t$T"
    
    Gruß Wolfgang
     
  4. #3 crizcroz, 21.06.2007
    Zuletzt bearbeitet: 21.06.2007
    crizcroz

    crizcroz Grünschnabel

    Dabei seit:
    21.06.2007
    Beiträge:
    4
    Zustimmungen:
    0
    Hallo Wolfgang,

    ich bitte um Nachsicht. An die Infos habe ich gar nicht gedacht.
    Ich arbeite unter AIX UNIX mit der Kornshell.

    Aber, danke für diesen Hinweis. Auch wenn ich das noch nicht so richtig verstehe, werde ich es mal ausprobieren.

    Gruß
    Chris
    .
    .
    .
    EDIT (autom. Beitragszusammenführung) :
    .

    Ach so, jetzt versteh ich das erst. Datum und Uhrzeit werden vorher (neu) erzeugt und dann ausgegeben. Das ist aber nicht ganz das, was ich wollte.

    Es soll der vorhandene String ("test12.abc.123,070621,072815") in das genanntes Format umgewandelt werden.

    Gruß
    Chris
    .
    .
    .
    EDIT (autom. Beitragszusammenführung) :
    .

    ==> test12.abc.123 Datum: 21.06.07 Uhrzeit: 07:28:15
     
  5. NoXqs

    NoXqs Routinier

    Dabei seit:
    07.05.2007
    Beiträge:
    420
    Zustimmungen:
    0
    Ort:
    Bremen
    Wieso awk oder sed? Die Shell kann das auch.
    Hiermit werden das Datum und die Zeit in einzelne Variablen geschrieben.
    Wie du die mit einem echo zusammenbastelst, solltest du selbst wissen.
    Achso, ich hab es mit der bash gemacht, aber auch die ksh sollte die Variablen so auflösen können. Sonst mußt du die Posix nehmen. Die kann es auf alle Fälle.

    Code:
    VAR1="test12.abc.123,070621,072815"
    
    VAR_NAME=` echo ${VAR1} | cut -f1 -d,`
    VAR_DATE=` echo ${VAR1} | cut -f2 -d,`
    VAR_TIME=` echo ${VAR1} | cut -f3 -d,`
    
    VAR_YEAH=${VAR_DATE%????}
    VAR_MONTH1=${VAR_DATE#??}
    VAR_MONTH=${VAR_MONTH1%??}
    VAR_DAY=${VAR_DATE#????}
    
    VAR_HOUR=${VAR_TIME%????}
    VAR_MIN1=${VAR_TIME#??}
    VAR_MIN=${VAR_MIN1%??}
    VAR_SEC=${VAR_TIME#????}
    
    echo ${VAR_NAME}
    
    echo ${VAR_YEAH}
    echo ${VAR_MONTH}
    echo ${VAR_DAY}
    
    echo ${VAR_HOUR}
    echo ${VAR_MIN}
    echo ${VAR_SEC}
    
     
  6. #5 crizcroz, 21.06.2007
    crizcroz

    crizcroz Grünschnabel

    Dabei seit:
    21.06.2007
    Beiträge:
    4
    Zustimmungen:
    0
    Och, kommt Jungs, dat geht besser:D

    Gut, ich wie ich sehe, kann man das auch ohne sed und awk lösen. Aber ich bin mir sicher, dass es mit diesen Tools in ein oder zwei Zeilen geht.

    Aber danke für die Mühe!
     
  7. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  8. chade

    chade Jungspund

    Dabei seit:
    17.06.2007
    Beiträge:
    18
    Zustimmungen:
    0
    Code:
    $ echo 'test12.abc.123,070621,072815' | sed 's/,\([0-9][0-9]\)\([0-9][0-9]\)\([0-9][0-9]\),\(.*\)/   Datum: \3.\2.\1   Uhrzeit: "\4" (machst du selbst;))/'
    test12.abc.123   Datum: 21.06.07   Uhrzeit: "072815" (machst du selbst;))
    
    Das macht natürlich die Annahme, dass im (von dir nicht genauer spezifizierten) "test12.abc.123" nicht schon eine in Kommata eingeschlossene Gruppe von 6 Ziffern enthalten ist.

    BTW: Die Code-Textfelder im Forum hier sind viel zu schmal...
     
  9. #7 crizcroz, 21.06.2007
    crizcroz

    crizcroz Grünschnabel

    Dabei seit:
    21.06.2007
    Beiträge:
    4
    Zustimmungen:
    0
    Yeah, saubere Arbeit! Vielen Dank! :)

    Das ist ganz nach meinem Geschmack! Danke Dir, chade!

    Gruß
    Chris
     
Thema:

String mit awk oder sed verarbeiten

Die Seite wird geladen...

String mit awk oder sed verarbeiten - Ähnliche Themen

  1. string herausfischen mit sed oder awk

    string herausfischen mit sed oder awk: hallo, schreibe schon seit einiger zeit bash-scripte, habe aber bisher sed und awk immer irgendwie umschiffen können. gerade sed erscheint mir...
  2. FIND mit UND-Verknüpfung im Suchstring

    FIND mit UND-Verknüpfung im Suchstring: Hallo, ich schaffe es einfach nicht bei folgendem Kommando die Suchoptionen zu erweitern, damit nur Dateien beginnend mit "T_*" aufgelistet...
  3. String auf Konsole ausgeben

    String auf Konsole ausgeben: Hallo zusammen, ich bin auf ein Problem gestoßen dass für mich sehr unverständlich ist, aber vllt übersehe ich auch etwas Offensichtliches. Es...
  4. String einer bestimmten Zeile durchsuchen

    String einer bestimmten Zeile durchsuchen: Hallo, wie kann ich den eine bestimmte Zeile einer Textdatei zerlegen und daraus ein Stück entnehmen? Ich suche nach der Zeile in der "model...
  5. alles außer letzte 4 strings

    alles außer letzte 4 strings: Hallo, ich habe verschieden lange Strings (Dateinamen) und möchte gerne den Dateinamen als Variable ausgeben: 1. Strings...