我在文本文件中有以下行:
severity: Error , count: 10 violations , waived: 7, not waived: 3
如何在 shell 中使用单个命令提取not waived:
(ie ) 之后的数字?3
grep
tcsh
答案1
在这种情况下会更容易awk
:
% awk '{ print $NF }' file.txt
3
$NF
是输入记录(行)中最后一个空格分隔字段(列)中的数据。
grep
是一般来说用于获取与特定模式匹配的整行,但某些实现也可用于使用标志来获取行的位-o
(将仅返回匹配的位):
% grep -o '[[:digit:]]$' file.txt
3
但对于在线数据的一般处理,我建议awk
使用grep
.
如果文件包含其他不太相关的数据行:
% awk '/^severity:/ { print $NF }' file.txt
此外,如果该字段不在该行的最末端,您可能需要使用sed
:
% sed -n '/^severity:/s/^.*not waived: \([[:digit:]]*\).*$/\1/p' file.txt
3