Arhn - архитектура программирования

Извлечение времени пинга и добавление префикса с отметкой времени

Я пытаюсь извлечь время пинга в более удобном для данных формате. Моя цель - превратить что-то вроде этого:

64 bytes from arn06s02-in-f0.1e100.net (173.194.32.32): icmp_seq=59 ttl=54 time=31.8 ms

во что-то вроде:

1361999357 31.8

Где первое число происходит от $(date +%s), а второе число — это 8-й столбец из команды ping.

Я хотел бы иметь возможность запускать это в течение длительного времени и получать длинный список из двух столбцов с отметками времени и временем пинга.

Временная метка У меня есть временная метка, работающая со следующим:

ping google.com | while read line; do echo "$(date +%s) $line"; done

Но когда я пытаюсь добавить sed, awk или cut в конвейер, чтобы получить только время, я не получаю вывода!

Я не очень хорошо знаком с sed или awk, хотя я уверен, что они должны быть правильными инструментами для работы. Мои попытки не привели к результату. Я думаю, это потому, что awk ожидает EOF перед передачей вывода следующей программе с конвейером?

Спасибо!

27.02.2013

  • awk и sed выполняют построчную обработку. если они не выводят, значит, вы неправильно обрабатываете ввод, и оба думают, что выводить нечего. 28.02.2013

Ответы:


1

Используя awk:

$ ping google.com | awk -F'[ =]' 'NR>1{print system("echo -n $(date +%s)"), $11}'

Короткий и эффективный, не так ли? =) И проблем с буферизацией не возникает...

Примечание: system("") можно использовать как хак, чтобы избежать буферизации.

27.02.2013
  • Это потрясающе! Благодарю вас! 28.02.2013
  • На самом деле я не могу перенаправить вывод в файл с > f. Ты знаешь почему? 28.02.2013
  • Ваше здоровье! Это решает проблему с файлами. Я также только что заметил, что команда «дата» не меняется. Это дает одинаковое время для каждого пинга. 28.02.2013
  • Огромное спасибо! Я очень ценю ваше время :) Вы просто гений! Спасибо! 28.02.2013

  • 2

    Попробуй это:

    ping -c 1 google.com | grep "bytes from" | while read line; do echo "$(date +%s) $line"; done | awk '{print $1 " " $8}' | sed 's,time=,,'
    

    Обратите внимание, что если вы опустите '-c', произойдет определенная буферизация, прежде чем вы получите какой-либо вывод. Оставив '-c', вы сможете быстрее увидеть результаты и убедиться, что все работает.

    27.02.2013
  • Это работает! За исключением того, что 8 долларов должны быть 9 долларов в awk, чтобы учитывать добавленную метку времени. Насколько велик буфер, если параметр -c не указан? Он работает еще какое-то время. В идеале этот скрипт должен сбрасывать буфер после каждого пинга. 28.02.2013

  • 3

    Лишь бы быть другим...

    ( date '+%s' ; ping -c 1 google.com; ) | sed -ne '/^[0-9][0-9]*$/h;/ bytes from /{s/^.*time=\([0-9.]*\).*/ \1/;H;g;s/\n//;p;}'
    

    Результат: 1362002815 7,52

    27.02.2013
  • Мне нужно иметь возможность запускать ping без указания -c. Но спасибо! 28.02.2013
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..