String mit awk oder sed verarbeiten

C

crizcroz

Grünschnabel
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
 
Zuletzt bearbeitet:
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
 
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) :
.

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

==> test12.abc.123 Datum: 21.06.07 Uhrzeit: 07:28:15
 
Zuletzt bearbeitet:
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}
 
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!
 
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...
 
Yeah, saubere Arbeit! Vielen Dank! :)

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

Gruß
Chris
 

Ähnliche Themen

CSV Datei mit sed manipulieren/optimieren/ergänzen

Last mit etc/passwd anzeigen lassen

string herausfischen mit sed oder awk

Strings vergleichen und ersetzen

Onlineumfrage programmieren (mehrseitige HTML Formular an PHP übergeben)

Zurück
Oben