Это мой первый вопрос / пост, и я очень плохо знаком с регулярными выражениями.Несмотря на множество поисков и экспериментов (например, опции -o и -w), я не могу выполнить следующую работу (и я слишком смущен, чтобы публиковать все свои неудачные попытки, но см. Конец поста),Я пытаюсь получить некоторые сведения о погоде (информацию о состоянии, температуре и ветре) с веб-сайта.
Я использую следующее утверждение для извлечения соответствующей информации в текстовый файл, который я затем хочуgrep для извлечения информации.Текущая погода указана вверху, поэтому мне нужны только первые несколько строк (заголовок -n 7).Вы можете посетить сайт (https://wttr.in/[city]) и ввести [город], чтобы увидеть разнообразие результатов.
curl -s wttr.in/fargo | head -n 7> ~ / Загрузки / погода.cache
Вот проблемы / проблемы, с которыми я сталкивался:
- В каждой строке есть некоторый элемент «stick», который имеет цветовую кодировку.текстовый файл вместе с текстом «палочек».
- Текущее состояние погоды может быть одним словом (солнечно) или несколькими словами (переменная облачность). Я хочу все.
- Температура может бытьодно число (5 ° F), диапазон (0-15 ° F) и, конечно, возможны отрицательные числа (-10--5 ° F). Мне нужна вся информация.
- Направление ветра искорость (m 8 миль / ч). Опять же, скорость может быть диапазоном (5-16 миль / ч). Направление ветра - это специальный символ / символ Юникода, который я хочу запечатлеть.
- Я хочу назначить каждому элементу (#2-4) к своей переменной без каких-либо дополнительных вещей из строки.
Идеальные результаты из моего приведенного выше примера, который будетЯ буду использоваться в строке состояния, будет выглядеть следующим образом.
Погода = «Солнечно»
Темп = «-22--5 ° F»
Ветер = «↘ 8 миль в час »
Любая помощь будет наиболее ценной.Заранее извиняюсь за то, что я изо всех сил пытался правильно отформатировать этот пост.
Фон
Фактический вид веб-сайта приведен ниже, но без цветовой кодировки для фигурки "Солнце" и "8" (ветерскорость).Примечание: цветовая кодировка неправильна из-за программного обеспечения для публикации (и, вероятно, моего недостатка знаний).Таким образом, может быть полезно перейти на исходный сайт (https://wwtr.in/fargo).
Weather report: Fargo, United States of America
\ / Sunny
.-. -22--5 °F
- ( ) - ↘ 8 mph
`_' 9 mi
/ \ 0.0 in
Curl result is below, which is being stored in the weather cache file I'm working with.
Weather report: Fargo, United States of America
[38;5;226m \ / [0m Sunny
[38;5;226m .-. [0m [38;5;021m-22[0m-[38;5;021m-5[0m °F[0m
[38;5;226m ― ( ) ― [0m [1m↘[0m [38;5;226m8[0m mph[0m
[38;5;226m `-’ [0m 9 mi[0m
[38;5;226m / \ [0m 0.0 in[0m
===
Некоторые попытки
В качестве примера с температурой, вотближе всего я подошел.
egrep --regexp='-?[[:digit:]].*°F'
.-. -22--5 °F
Неудачные попытки включают (также опробовал -w вариант).
grep -m 1 -Eo -e '-?[[:digit:]].*°F'
38;5;226m .-. -22--5 °F