使用 grep 从文本文件中提取数据

使用 grep 从文本文件中提取数据

我在文本文件中有以下行:

severity: Error , count: 10 violations , waived: 7, not waived: 3

如何在 shell 中使用单个命令提取not waived:(ie ) 之后的数字?3greptcsh

答案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

相关内容