是否有命令在Linux中仅输出部分命令结果?

时间:2016-01-24 07:48:58

标签: linux bash shell ubuntu text-processing

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

例如:

lscpu | grep MHz

将输出:

CPU MHz:               1216.851

但如果我只想要:

1216.851 

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

1 个答案:

答案 0 :(得分:6)

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

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

或者:

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

$3表示输出中的第三个字段(由任意数量的空格分隔)。 $NF代表输出中的最后一个字段,无论有多少字段。

您也可以完全跳过grep并使用awk

完成所有操作
$ lscpu | awk '/MHz/ { print $NF; exit }'
2494.038

正如@glenn jackman指出的那样,GNU grep也可以这样做:

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

但上面的其他示例是POSIX友好的(尽管具有lscpu的系统可能也有GNU grep)。