我需要在日志文件中搜索第一次出现的字符串模式“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