Ich habe eine csv
Datei im folgenden Format:
20171129,1
20171201,0.5
20171201,0.5
20171202,1.25
20171202,1.75
Ich benutze den folgenden Befehl, um das zweite Feld zusammenzufassen, wenn es mit diesem Befehl dem gleichen Datum folgt:
awk -F ',' '{a[$1] += $2} END{for (i in a) print "On " i, "you spend: "a[i] " hour(s)"}' << "file.csv"
Die Ausgabe, die ich bekomme, sieht folgendermaßen aus:
On 20171129 you spend: 1 hour(s)
On 20171201 you spend: 1 hour(s)
On 20171202 you spend: 3 hour(s)
Was ich jetzt erreichen möchte, ist das Format so zu formatieren, als würde ich mit:
awk -F ',' '{a[$1]} END{for (i in a) print i}' << "file.csv" \
| date +"%a, %d.%m.%Y" -f -
# prints:
Wed, 29.11.2017
Fri, 01.12.2017
Sat, 02.12.2017
Mein Endergebnis würde also so aussehen:
On Wed, 29.11.2017 you spend: 1 hour(s)
On Fri, 01.12.2017 you spend: 1 hour(s)
On Sat, 02.12.2017 you spend: 3 hour(s)
Ist es möglich, date
innerhalb des awk
Befehls aufzurufen, um die Ausgabe zu formatieren?
command-line
awk
date
nath
quelle
quelle
Mi
ist Deutsch fürMittwoch
=Wednesday
, dachte , dies nicht zu viel von einer Sache war, aber du hast recht, ich sollte das Snippet bearbeiten:Wed
,Fri
,Sat
, mehr Sinn auf Englisch QA Board gemacht :-)Antworten:
Sie können gawk mit den Funktionen strftime und mktime verwenden ( https://www.gnu.org/software/gawk/manual/html_node/Time-Functions.html ).
In weiteren Details:
Mit einem einfachen awk müssen Sie den Befehl aufrufen und sein Ergebnis mit getline lesen :
In weiteren Details:
quelle