Отфильтровать CSV-файл, чтобы удалить его, если поле 1 совпадает, а дата/время в поле 3 меньше 5 минут от первого поля -1 совпадение

Та же ошибка возникает при первом запуске виртуальной машины Windows7 на Arch после установки VirtualBox.

В моем случае выполнение sudo modprobe vboxdrvне дало результата (, хотя ФАТАЛЬНОЙ ошибки не было, поскольку OP столкнулся с ). Также не найдена команда sudo /sbin/vboxconfig.

Бег rcvboxdrv, похоже, помог:

$ sudo /sbin/rcvboxdrv
Unloading modules: vboxdrv 
Loading modules: vboxnetadp vboxnetflt vboxpci vboxdrv 

Перезагрузка не потребовалась! После этого виртуальная машина работала нормально.

0
07.03.2021, 06:24
1 ответ

Вы можете создать функцию в awk, чтобы получить разницу в секундах между двумя датами, а затем просто сохранить последнюю «действительную» дату в массиве awk, проиндексированном первым полем, чтобы вы могли его использовать в сравнении, например:

awk '
function getDateDifference(a,b) {
    gsub(/[:/]/, " ", a)
    startDate = mktime(a)
    gsub(/[:/]/, " ", b)
    endDate = mktime(b)
    return int(endDate - startDate)   
}

BEGIN { FS=OFS="," } 

dates[$1]=="" || (dates[$1]!="" && getDateDifference(dates [$1],$3) > 300){
    print $0;
    dates[$1] = $3
}' input.txt

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

1
18.03.2021, 22:26

Теги

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