Как принять абсолютное значение с помощью awk?

Если у меня ниже двух дат:

2015-09-12,2015-08-13 

И мне нужно получить количество дней между ними, я буду использовать приведенный ниже код:

 awk -F'[-,]' '{print 360*($4-$1)+30*($5-$2)+($6-$3)}' 

Выход для этого кода будет -29 то время как на самом деле разница составляет 29

Пожалуйста, порекомендуйте,

4 Solutions collect form web for “Как принять абсолютное значение с помощью awk?”

Вы можете определить функции в awk как:

 awk -F'[-,]' ' function abs(v) {return v < 0 ? -v : v} {print abs(360*($4-$1)+30*($5-$2)+($6-$3))}' 

Общим трюком для подобных ситуаций является использование квадратного корня из квадрата:

 awk -F'[-,]' '{print sqrt((360*($4-$1)+30*($5-$2)+($6-$3))^2)}' 

Другой путь:

 awk -F'[-,]' '{d=360*($4-$1)+30*($5-$2)+($6-$3);print (d>0)?d:-d}' 

Предполагая, что вы на GNU awk , функция funky mktime пригодится здесь.

 awk -F, '{ gsub(/-/," ",$0);a=(mktime($2 " 23 59 59")-mktime($1 " 00 00 00"))/86400;print a*(a<0?-1:1)}' file.txt 29 
  • Как удалить пробелы из выбранных строк
  • Печать, если для того же 1-го поля есть одно значение 2-го поля на всех строках
  • Как получить nth до n + ath байт по всем строкам, формируя текстовый файл в * nix?
  • вывод соседних строк с номерами строк, в то время как grepping
  • Как разбить файл на основе контекста?
  • Нужен скрипт, который генерирует файлы из слов в одном текстовом файле
  • Грепирование нескольких экземпляров строки, с контекстом, из файла
  • проверить переменную в файле для согласованности в приращении
  • Проблема с пастой и стандартным выходом в linux
  • использование gsub в awk для замены слова скобками
  • Единая команда, берущая две строки для извлечения строки между ними, например, 'tr' (без выражений)
  • Interesting Posts

    Является ли Zalman ZM-RSSC 5.1 USB Sound Card поддерживаемой в Linux?

    SCP работает, но SSH не работает (по Wi-Fi)

    Использование команды break в качестве аргумента функции

    Как найти и подсчитать, сколько файлов содержит определенное слово?

    как копировать файлы, такие как Microsoft Robocopy, в debian?

    Ошибка файловой системы Live с помощью EasyBCD

    Как найти ppd в драйвере принтера-escpr?

    Сохранение вывода stderr в переменной без модификации stdout и повторение этого действия

    Разблокируйте зашифрованные тома после перезапуска сервера через SSH

    понимание судоводителей

    Невозможно изменить размер удаленных окон через X11VNC?

    где скрывается тема AlaDelta и как ее удалить / очистить / удалить

    Как случайным образом подмножить файл, а затем выбрать одинаковые номера строк из нескольких файлов

    Заставить GRUB загрузиться в определенное ядро ​​/ ОС?

    KDE: Оставить -> Выключить Компьютер не выключает систему

    Linux и Unix - лучшая ОС в мире.