Вы пытаетесь сопоставить только в начале строки с ^
привязкой в начале.Кроме того, вы не извлекаете совпадения, вы получаете только строки, совпадающие с шаблоном.
Использование
grep -oE '\b[12][0-9]{4}\b'
Он выберет вам совпадающие подстроки только благодаря -o
, и шаблон будеттолько совпадение
\b
- граница слова [12]
- 1
или 2
[0-9]{4}
- любые четыре цифры \b
- граница слова.
См. online grep
demo :
s="KBOS 052354Z 19012KT 10SM FEW075 BKN110 OVC200 24/14 A2975 RMK AO2 SLP074 T02390144 10289 20239 55002"
grep -oE '\b[12][0-9]{4}\b' <<< "$s"
# Or grep -oE '\<[12][0-9]{4}\>' <<< "$s"
Вывод:
10289
20239