繁体   English   中英

找到所有带有关键字的行并提取编号

[英]Find all lines with keyword and extract number

我想找到以单词“ ERRORS”开头的行,并从该行中提取数字。

文件的一部分:

...
[ERROR] No keywords and test cases defined in file
File path: libraries_instances.robot

TEST SUITES SUMMARY:
ERRORS:        148
WARNINGS:      89
CS VIOLATIONS: 201

我的解决方案是:

grep ERRORS .validation.log | grep -o -E '[0-9]+'

是否有可能使它更好并且仅使用一个grep?

最后,我想在bash脚本中将该值分配给变量。

由于存在linux标签,因此假设带有-P选项的GNU grep是可用的

$ grep -oP 'ERRORS.*\h\K\d+' .validation.log
148
  • ERRORS.*\\h\\K这里的\\K选项有助于标记正则表达式的起点。匹配到该点的字符串将不作为输出的一部分
  • 还要注意, man grep警告关于将-P用作实验,但是到目前为止,我还没有遇到任何问题。.(有关已知的GNU grep请参见https://debbugs.gnu.org/cgi/pkgreport.cgi?package=grep问题)


使用awk替代解决方案

$ awk '/ERRORS:/ && NF==2{print $NF}' .validation.log
148
  • /ERRORS:/ && NF==2包含ERRORS:匹配行,并且只有两个字段(默认情况下,一个或多个连续的空白是字段定界符)
  • print $NF打印最后一个字段

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM