【问题标题】:Is there a command to output only part of a command result in Linux?在 Linux 中是否有仅输出部分命令结果的命令?
【发布时间】:2016-04-30 15:04:01
【问题描述】:

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

例如:

lscpu | grep MHz

将输出:

CPU MHz:               1216.851

但如果我只想:

1216.851 

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

【问题讨论】:

  • awk外,另见cutsed

标签: linux bash shell ubuntu text-processing


【解决方案1】:

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

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

或者:

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

$3 表示输出中的第三个字段(由任意数量的空格分隔)。 $NF 代表输出中的 LAST 字段,不管有多少字段。

您也可以完全跳过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)。

【讨论】:

  • 或者,如果你有 GNU grep 并且你喜欢 PCRE 正则表达式:lscpu | grep -oP 'MHz:\s+\K.*'
猜你喜欢
  • 1970-01-01
  • 2021-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-28
  • 2020-04-05
相关资源
最近更新 更多