我正在尝试提取文本文件中模式匹配之间的所有数值。
已解析的日志文件文本
> 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/'
答案 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个以上的数字。答案 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)