我正在尝试解析出符合特定条件的数字组。
文本示例
KBOS 052354Z 19012KT 10SM FEW075 BKN110 OVC200 24/14 A2975 RMK AO2 SLP074 T02390144 10289 20239 55002
需要解析的组
10289 20239
尝试输入密码
echo "KBOS 052354Z 19012KT 10SM FEW075 BKN110 OVC200 24/14 A2975 RMK AO2 SLP074 T02390144 10289 20239 55002" | grep -E '^1[0-9][0-9][0-9][0-9]'
echo "KBOS 052354Z 19012KT 10SM FEW075 BKN110 OVC200 24/14 A2975 RMK AO2 SLP074 T02390144 10289 20239 55002" | grep -E '^2[0-9][0-9][0-9][0-9]'
我在做什么错了?
答案 0 :(得分:1)
您试图仅在字符串的开头与^
锚点进行匹配。此外,您不会提取匹配项,而只会获得与模式匹配的行。
使用
grep -oE '\b[12][0-9]{4}\b'
仅靠-o
,它将为您提取匹配的子字符串,并且模式仅匹配
\b
-单词边界[12]
-1
或2
[0-9]{4}
-任意四位数\b
-单词边界。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