Как вырезать определенный текст из файла и записать в другой файл

Сначала вам нужно преобразовать даты в формат unix time _t (т.е. секунды с "эпохи", 1970 -01 -01 00 :00 :00 ). Затем вы можете вычислить разницу с помощью простого вычитания.

Имеющиеся у вас даты не распознаются программой dateв их текущем формате. Он ожидает что-то похожее больше на дату с дефисами и двоеточиями, разделяющими поля, чем на число.

Вот пример, который использует sedв функции для «фиксации» дат -, т.е. конвертирует их в формат, понятный date, а затем использует dateдля преобразования во время _t секунд, затем выполните вычитание:

#!/bin/bash

a=20170804020000
b=20170804015959

function fixdate() {
  printf "$1" | sed -E -e 's/(....)(..)(..)(..)(..)(..)/\1-\2-\3 \4:\5:\6/'
}

a_seconds="$(date -d "$(fixdate "$a")" '+%s')"
b_seconds="$(date -d "$(fixdate "$b")" '+%s')"
seconds=$((a_seconds - b_seconds))

echo "$seconds"
1
15.11.2019, 17:51
1 ответ

Использование sed:

sed -E 's/^[[:digit:]]+:[[:space:]]+//' file
2
27.01.2020, 23:29

Теги

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