Добавление столбца даты и времени со столбцом секунд с помощью awk

Вы читали документацию? Нет такого понятия, как «копирование файла». Открыто, напишите x N, закройте. Нет способа узнать размер файла заранее. Диск выбирается во время создания, и это определяется политикой создания. По умолчанию это epmfs, который выбирает диск с наибольшим количеством свободного места, для которого используется относительный путь.

Если вы хотите сохранить политику сохранения пути и обрабатывать подобные ситуации, обратите внимание на функцию moveonenospc.

-1
22.01.2019, 12:21
1 ответ

Предполагается, что ваш файл разделен табуляцией.

awk -F$'\t' '
    BEGIN{OFS="\t"}
    NR!=1{
        ("date -Iseconds -d \""$1"\"" | getline startdate)
        ("date \"+%Y-%m-%d %H:%M:%S\" -d \""startdate" + "$3" seconds\"" | getline $4)
    }1' file.csv
  • BEGIN{OFS="\t"}Установите разделитель полей вывода на табуляцию.
  • NR!=1{...}выполнить команду в скобках для любой строки, кроме заголовка.
    • ("date -Iseconds -d \""$1"\"" | getline startdate)Преобразуйте дату в формат, который легко читается для команды даты, и сохраните ее как startdateпеременную.
    • ("date \"+%Y-%m-%d %H:%M:%S\" -d \""startdate" + "$3" seconds\"" | getline $4)Добавьте секунды из поля $3в startdateи сохраните их как поле $4.
  • 1напечатать строку.

Если файл не разделен табуляцией -, вам нужно исправить это примерно так:sed -i -r 's/\s\s+/\t/' file.csv.

1
28.01.2020, 05:09

Теги

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