Я пытаюсь получить самую последнюю запись для каждого IP-адреса - второй столбец - используя дату в столбце 3 из data.csv. В настоящее время я использую for l oop с sort & grep, но мой фактический data.csv содержит более 9000 строк, и этот процесс занимает более часа. Я ищу более быстрый метод для анализа этих данных (возможно, AWK?)
data.csv:
110095,10.185.10.53,2020-01-07 03:00:57
110095,10.185.10.53,2019-11-06 09:22:02
110095,10.185.12.15,2019-09-23 09:03:24
110095,10.185.12.15,2019-09-23 09:03:24
110095,10.185.12.16,2020-01-07 03:00:57
110095,10.185.12.16,2019-12-20 09:18:57
110095,10.185.12.31,2019-02-07 08:13:35
110095,10.185.12.31,2019-12-20 09:18:57
110095,10.185.12.31,2020-01-07 03:00:57
110095,10.185.12.32,2019-09-23 09:03:24
110095,10.185.12.32,2019-12-20 09:18:57
110095,10.185.12.32,2019-11-06 09:22:02
Текущий используемый процесс:
UNIQUE=$(awk -F, '{print $2}' "/C/Temp/data.csv" | sort -t, -k2 | uniq)
for dest in $UNIQUE; do
grep ,${dest}, "/C/Temp/data.csv" | tr , ' ' | sort -k3 -k4 | tail -1 >> /C/temp/Latest.csv
done
Последний .csv:
110095 10.185.10.53 2020-01-07 03:00:57
110095 10.185.12.15 2019-09-23 09:03:24
110095 10.185.12.16 2020-01-07 03:00:57
110095 10.185.12.31 2020-01-07 03:00:57
110095 10.185.12.32 2019-12-20 09:18:57