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

Как найти два значения в файле и использовать их как переменные?

Как я могу найти и сохранить в качестве переменных два числа, за которыми следуют "RX bytes:" и "TX bytes:" в этом файле? Я хочу рассчитать эти значения в простом bash-скрипте мониторинга текущей пропускной способности с использованием маршрутизатора OpenWrt.

/dev/band1:

br-lan    Link encap:Ethernet  HWaddr 
      inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:3848954 errors:0 dropped:21234 overruns:0 frame:0
      TX packets:4213574 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0
      RX bytes:1206316927 (1.1 GiB)  TX bytes:3385060741 (3.1 GiB)

Спасибо за помощь!

29.05.2013

Ответы:


1

например, байты RX, вы можете:

rxBytes=$(yourcmd|grep -Po '(?<=RX bytes:)\d+')

замените RX на TX, вы получите другую переменную

ИЗМЕНИТЬ

вы также можете использовать awk:

rxBytes=$(awk -F'RX bytes:' 'NF>1{sub(/ .*$/,"",$2);print $2}')

chg RX -> TX, чтобы получить другой.

29.05.2013
  • Мой grep, к сожалению, не поддерживает регулярное выражение в стиле жемчуга :( Только расширенное регулярное выражение. 29.05.2013
  • Или даже set -- $(ifconfig br-lan | grep -Po '(<=[Rt]X bytes:)\d+'), что должно дать RX в $1 и TX в $2, при условии, что выходной формат не изменится. 29.05.2013
  • Можно ли преобразовать этот синтаксис в формат расширенного регулярного выражения? мой grep не поддерживает переключатель -P. 29.05.2013

  • 2
    #!/bin/bash
    N=(`ifconfig p2p1 | sed -n 's/.*RX bytes:\([0-9]*\) .*TX bytes:\([0-9]*\).*/\1\n\2/p'`)
    echo Bytes received ${N[0]}
    echo Bytes sent ${N[1]}
    

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

    29.05.2013
  • Вы можете легко разложить grep на sed; просто добавьте опцию -n, чтобы ничего не печатать по умолчанию, и флаг p для подстановки, чтобы печатать при ее срабатывании. 29.05.2013
  • Спасибо @tripleee, я объединил взлом grep в sed с флагами -n и p. 29.05.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 , и использованием..

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