Добавление столбца datetime со столбцом времени в секундах файла csv с использованием оболочки

«Растровый шрифт» звучит как командное окно Windows (и, кстати, не является шрифтом TrueType). Можно установить консольные шрифты Linux, но это специально созданные шрифты (не генерируются и не переводятся автоматически из шрифтов Windows). Если кто-то не сделал один из шрифтов консоли Linux, чтобы имитировать внешний вид Windows, вам не повезло.

Дополнительная литература:

-1
21.01.2019, 18:18
2 ответа

Идея состоит в том, чтобы сначала преобразовать время эпохи (секунд с 1970 года -01 -01 00 :00 :00 UTC ), затем добавить продолжительность и, наконец, преобразовать обратно в предыдущее обозначение:

DateTime_epoch_time=$(date +%s -d $DateTime) 
CallEndTime_epoch_time=$(("$DateTime_epoch_time" + $TotalDuration))
CallEndTime=$(date '+%Y-%m-%d %H:%M:%S' -d @$CallEndTime_epoch_time)

Или в одну строку:

date '+%Y-%m-%d %H:%M:%S' -d @$(($(date +%s -d "$DateTime") + $TotalDuration))

Подробнее об управлении форматами даты см. man date

0
28.01.2020, 05:12

Например, я принял значения общей продолжительности за 1000

Ниже приведен образец формата примера, который я взял, который является образцом, как вы разместили, кроме последнего столбца

2018 -12 -18 18 :36 :55, callendtime, KeywordTagTexts, 1000

Пожалуйста, прокомментируйте любые исправления или изменения

Шаг 1

Преобразование столбца1 (даты и времени в секундах)

datetime_in_seconds=$(date -d "`awk -F "," '{print $1}' example.txt`" +%s)

шаг 2

Добавление столбца 1 (даты и времени )и последнего столбца (Общая продолжительность )Для расчета CallEndTime

k=$((datetime_in_seconds + duration_in_seconds))

Теперь значение печатается в исходном формате

Последняя команда

awk -F "," -v k="$k"  'OFS=","{$2=$2"="k;print $0}' example.txt

Выход

2018-12-18 18:36:55,callendtime=1545188015,KeywordTagTexts,1000
0
28.01.2020, 05:12

Теги

Похожие вопросы