Как принять абсолютное значение с помощью 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 
  • Как удалить конечные пробелы в конце строки в заданных файлах (более одного)?
  • Сортировка некоторых строк в файле
  • Одна командная строка оболочки, которая находит всех студентов в LEC05 и печатает свое имя в отсортированном порядке
  • vlookup работать в awk на linux
  • Извлечь линии, содержащие шаблон
  • Как удалить конечную новую строку в bash?
  • Другой вопрос awk (ward) - подстановка подстроки с несколькими ключами
  • Идеи для анализа результатов netstat для активных подключений
  • Как искать файл для каждой записи в списке и печатать новый файл для каждой записи
  • Найти дубликаты по столбцу в файле
  • Как изменить порядок столбцов в текстовом файле?
  • Как я могу сопоставить строку, когда ей не предшествует цифра с помощью awk?
  • Interesting Posts

    Как заставить мою третью кнопку большого пальца работать под gnome-shell? Как узнать, что крадет событие кнопки, или как обойти его?

    LXPanel реконфигурирует себя после перезагрузки

    Что именно происходит, когда встроенная команда запускается в оболочке?

    Как вычесть строки, наоборот, только если больше, чем предыдущая строка

    Как я могу настроить переименование подкастов после их загрузки с помощью gPodder?

    Резервное копирование с помощью Google диска

    псевдоним или функция bash не работает

    Как изменить драйвер по умолчанию, используемый для внешнего экрана

    Почему Crontab дает мне ошибку с моим PHP-скриптом при его запуске с терминала?

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

    Некоторые клавиши на клавиатуре вместо цифр

    Как я могу использовать vi для редактирования строки подсказки утилиты?

    Как отслеживать, что происходит во время входа в сеанс X11?

    Ограничение IP-адреса оборудования Ethernet

    Изменение размера окна до половины ширины экрана в KDE 3.5

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