grep для нескольких строк в выводе speedtest

Режим developфайла setup.py свяжет путь вашего локального кода с PYTHONPATH.

Если вы устанавливаете локальный пакет python setup.py develop, который изменит систему PYTHONPATHи сведет вас с ума, если вы удалите его из переменных окружения.

Я нашел правильный способ удалить их и восстановить настройки по умолчанию PYTHONPATHиз здесь . Вам нужно использовать опцию --uninstallили -uдля разработки, т.е.:

python setup.py develop --uninstall

PS :Если вы не можете удалить пакет в первый раз, попробуйте переустановить его и удалить снова.

0
03.12.2021, 21:53
3 ответа

Использование любого awk в любой оболочке на каждом компьютере Unix и использование имен данных в вашем коде только один раз, когда вам нужно их распечатать, чтобы вы могли тривиально добавлять дополнительные prt()операторы, изменять их, тестировать их и/ или переупорядочить их для этого или любых других подобных -форматированных данных без внесения каких-либо других изменений в код:

$ speedtest | awk '
    {
        gsub(/[:()]/,"")
        tag2val[tolower($1)] = $2 " " $3
        tag2val[tolower($6)] = $4 " " $5
    }
    END {
        prt("Download Speed")
        prt("Upload Speed")
        prt("Latency")
        prt("Jitter")
    }
    function prt(name,      tag) {
        tag = tolower(name)
        sub(/.*/,"",tag)
        print name ":" OFS tag2val[tag]
    }
'
Download Speed: 85.75 Mbps
Upload Speed: 5.68 Mbps
Latency: 93.85 ms
Jitter: 222.66 ms
-1
04.12.2021, 13:46

Версии этого инструмента (speedtest-cli), к которым у меня есть доступ (2.1.2 в Ubuntu и 2.1.3 в OpenBSD ), не дают точного выходного формата, который вы показываете. Однако он обеспечивает вывод как в формате CSV, так и в формате JSON, если заданы правильные параметры командной строки.

Это означает, что вы можете легко получить необходимые данные, например, из. вывод в формате JSON примерно так:

speedtest-cli --json | 
jq -r '[
    ["Download (Mbps):",.download/1e6],
    ["Upload (Mbps):",.upload/1e6],
    ["Latency (ms):",.server.latency]
] | map(@tsv)[]'

Это выбирает значение ключа .downloadвместе с .uploadи значением .latencyиз подобъекта .server-. Значения скорости загрузки и выгрузки указаны в битах в секунду, поэтому их необходимо соответствующим образом масштабировать. Значения выводятся с заголовками в виде табуляции -с разделителями.

Пример вывода:

Download (Mbps):        88.32191644148061
Upload (Mbps):  93.34628783248138
Latency (ms):   10.756

Вариант этого инструмента, который у меня есть, похоже, не выводит «джиттер» ни в одном из режимов вывода.


Для справки: полный вывод JSON может выглядеть так:

{
  "download": 88321916.4414806,
  "upload": 93346287.83248138,
  "ping": 10.756,
  "server": {
    "url": "http://somehost.example.com:8080/speedtest/upload.php",
    "lat": "XXX",
    "lon": "YYY",
    "name": "Thetown",
    "country": "Thecountry",
    "cc": "ZZ",
    "sponsor": "Company",
    "id": "XYZ",
    "host": "somehost.example.com:8080",
    "d": 156.5033515123062,
    "latency": 10.756
  },
  "timestamp": "2021-12-04T20:12:20.816506Z",
  "bytes_sent": 119447552,
  "bytes_received": 110800036,
  "share": null,
  "client": {
    "ip": "my-public-ip-number",
    "lat": "XX",
    "lon": "YY",
    "isp": "provider",
    "isprating": "3.7",
    "rating": "0",
    "ispdlavg": "0",
    "ispulavg": "0",
    "loggedin": "0",
    "country": "ZZ"
  }
}

Вы также можете проанализировать вывод CSV из speedtest-cliс помощью инструментов csvkit:

{ speedtest-cli --csv-header; speedtest-cli --csv; } |
csvcut -c Download,Upload,Ping | csvlook

Сначала выводятся заголовки CSV из speedtest-cli(, что по какой-то причине необходимо сделать отдельно ). Затем он запускает тест скорости, извлекает столбцы Download, Uploadи Pingи переформатирует полученный CSV в форматированную таблицу Markdown -.

Результат может выглядеть примерно так:

|        Download |          Upload |   Ping |
| --------------- | --------------- | ------ |
| 88,649,466.475… | 93,164,137.292… | 10.193 |

Что выглядит так при рендеринге :| Скачать | Загрузить | Пинг | | ---------------| ---------------| ------| | 88 649 466,475… | 93 164 137,292… | 10.193 |

Обратите внимание, что числа в первых двух столбцах указаны в битах/с.

3
04.12.2021, 19:52
`awk '{if ($1 ~ /Download/){print  "Download speed: " $2 " mbps"}else{if($1 ~ /Upload/){print "Upload Speed: "$2 " mbps"}else{if($NF ~ /jitter/  && $1 ~ /Latency/){gsub(/\(/`,"",$(NF-2));print "Latency :" $2 " ms\n jitter: " $(NF-2)" ms"}}}}' filename

Latency :93.85 ms
 jitter: 222.66 ms
Download speed: 85.75 mbps
Upload Speed: 5.68 mbps
0
05.12.2021, 02:00

Теги

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