Ich habe eine Datei mit Tausenden von Einträgen wie diese:
6/05/2016,32,34,40,45,48,,01,10
10/05/2016,02,26,27,40,49,,05,10
13/05/2016,07,15,28,31,42,,10,11
17/05/2016,15,27,32,36,39,,03,10
Ich möchte das Datum im ersten Feld durch eine fortlaufende Nummer ersetzen, beginnend mit 800. Diese Liste würde also umgewandelt werden in
800,32,34,40,45,48,,01,10
801,02,26,27,40,49,,05,10
802,07,15,28,31,42,,10,11
803,15,27,32,36,39,,03,10
...
Wie mache ich das?
Antwort1
Mit awk
ihm ist es so einfach wie
awk -F, -vOFS=, '{$1=n++; print}' n=800 file
Sie setzen die Eingabe- und Ausgabetrennzeichen auf ,
via -F,
und -vOFS=,
und initialisieren eine Variable n
auf 800
using n=800
. Die Anweisung „action“ {$1=n++; print}
wird für jeden Datensatz ausgeführt, wobei das erste Feld auf ein Post-Inkrement gesetzt n
und der wiederhergestellte Datensatz gedruckt wird.