Мне нужно прочитать файл CSV ( list.csv ) примерно так:
0;John Doe;2001;03;24
1;Jane Doe;1985;12;05
2;Mr. White;2018;06;01
3;Jake White;2017;11;20
...
и добавьте столбец (не имеет значения, где я его поместил) с отметкой времени Unix на основе года / месяца / дня в столбцах 3, 4 и 5, чтобы получить это:
0;John Doe;2001;03;24;985392000
1;Jane Doe;1985;12;05;502588800
2;Mr. White;2018;06;01;1527811200
3;Jake White;2017;11;20;1511136000
...
Итак, я написал это script.sh :
#!/bin/sh
while read line
do
printf "$line;"
date -d $(awk -F\; '{print $3$4$5}' <<<$line) +%s
done
и я побежал:
<list.csv ./script.sh
и это работает, но очень медленно, когда дело доходит до очень больших CSV.
Есть ли способ сделать это быстрее в командной строке sed / awk?
Я имею в виду, могу ли я (например) ввести команду bash в строку sed / awk?
Например (я знаю, что это не сработает, это всего лишь пример):
awk -F\; '{print $1 ";" $2 ";" $3 ";" $4 ";" $5 ";" $(date -d $3$4$5 +%s)}'