查找字符串模式第一次出现并从中提取子字符串

查找字符串模式第一次出现并从中提取子字符串

我需要在日志文件中搜索第一次出现的字符串模式“EPMAT-”并从中提取数字部分。 EPMAT- 后面会跟一些数字。我想从 EPMAT-20 中提取 20 并打印出来。

前文件:

This is a test  
test EPMAT-20 ......  
....  
EPMAT.33 test  
end of test.

答案1

sed

sed -n '/EPMAT/{ s/.*EPMAT-//; s/[^0-9].*//; p; q; }' file

答案2

grep -m1 -oP '\bEPMAT-\K\d+' yourfile

-m1只会查看整个文件中的第一个匹配项

-P将启用 Perl 正则表达式引擎。

-o将只显示匹配的部分

perl -lne 'print,exit for /\bEPMAT-\K\d+/g' yourfile

sed -ne '
   /\<EPMAT-[0-9][0-9]*/{
      s//&\
/
      s/.*-\([0-9]*\n\)/\1/
      P;q
   }
' yourfile

相关内容