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
)。
我的问题是,当我们在终端中输入带有 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
)。