提取模式匹配之间的值

时间:2018-09-21 10:32:24

标签: regex parsing unix sed

我正在尝试提取文本文件中模式匹配之间的所有数值。

已解析的日志文件文本

> GET /pub/data/nccf/com/hiresw/prod/hiresw.20180921/hiresw.t00z.nmmb_2p5km.f25.conus.grib2

我要从nmmb_2p5km.f 25 .conus.grib2

中的25中提取f25

尝试输入密码

sed -e 's/nmmb_2p5km\(.*\)grib2/\1/'

2 个答案:

答案 0 :(得分:1)

您可以使用

log="GET /pub/data/nccf/com/hiresw/prod/hiresw.20180921/hiresw.t00z.nmmb_2p5km.f25.conus.grib2"
sed 's/.*nmmb_2p5km[^0-9]*\([0-9]*\)[^0-9]*grib2.*/\1/' <<< "$log"

.*nmmb_2p5km[^0-9]*\([0-9]*\)[^0-9]*grib2.*模式匹配

  • .*-任意0个以上的字符
  • nmmb_2p5km-文字子字符串
  • [^0-9]*-0 +个非数字字符
  • \([0-9]*\)-捕获组1(在替换模式中后来称为\1):0+个数字
  • [^0-9]*-0 +个非数字字符
  • grib2.*-grib2和任意0个以上的字符。

或者,您可以将grep与PCRE模式一起使用

grep -Po 'nmmb_2p5km\D*\K\d+' <<< "$log"

详细信息

  • nmmb_2p5km-文字子字符串
  • \D*-0 +个非数字字符
  • \K-匹配重置操作符会丢弃到目前为止匹配的所有文本
  • \d+-1个以上的数字。

请参见online sed and grep demo

答案 1 :(得分:0)

使用perl单线版

Uncaught TypeError: s.get(...).style.removeAttribute is not a function
    at HTMLDivElement.F (envira-min.js?ver=1.6.2:11)
    at HTMLDivElement.r.complete (jquery-3.3.1.min.js?ver=3.3.1:2)
    at u (jquery-3.3.1.min.js?ver=3.3.1:2)
    at Object.fireWith [as resolveWith] (jquery-3.3.1.min.js?ver=3.3.1:2)
    at u (jquery-3.3.1.min.js?ver=3.3.1:2)
    at Function.w.fx.tick (jquery-3.3.1.min.js?ver=3.3.1:2)
    at at (jquery-3.3.1.min.js?ver=3.3.1:2)