Linux中是否有只输出部分命令结果的命令?

Is there a command to output only part of a command result in Linux?

我的问题是,当我们在终端中输入带有 grep 的命令时,我们会得到带有标题的输出:

例如:

lscpu | grep MHz

将输出:

CPU MHz:               1216.851

但如果我只想要:

1216.851 

作为输出?还有其他命令可以执行此任务吗?

虽然还有其他方法,但最直接的可能是 awk:

$ lscpu | grep MHz | awk '{print }'
2494.038

或者:

$ lscpu | grep MHz | awk '{print $NF}'
2494.038

</code> 表示输出中的第三个字段(由任意数量的空格分隔)。 <code>$NF表示输出中的最后一个字段,不管有多少个字段。

您也可以完全跳过 grep,只需使用 awk:

即可
$ lscpu | awk '/MHz/ { print $NF; exit }'
2494.038

正如 @glenn jackman 所指出的,GNU grep 也可以做到这一点:

lscpu | grep --color=never -oP 'MHz:\s+\K.*'

但是上面的其他例子是POSIX-friendly(虽然有lscpu的系统可能也有GNU grep)。