首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要"grep“多个输出

需要"grep“多个输出
EN

Stack Overflow用户
提问于 2016-05-31 19:33:15
回答 2查看 69关注 0票数 0

使用此命令(upower -i /org/freedesktop/UPower/devices/battery_BAT1)我的终端显示以下输出:

代码语言:javascript
复制
  native-path:          BAT1
  vendor:               LG
  power supply:         yes
  updated:              mar 31 may 2016 12:45:15 CEST (101 seconds ago)
  has history:          yes
  has statistics:       yes
  battery
    present:             yes
    rechargeable:        yes
    state:               fully-charged
    warning-level:       none
    energy:              50,4088 Wh
    energy-empty:        0 Wh
    energy-full:         51,4522 Wh
    energy-full-design:  48,1 Wh
    energy-rate:         6,29 W
    voltage:             8,313 V
    percentage:          97%
    capacity:            100%
    icon-name:          'battery-full-charged-symbolic'

我需要获得一个包含输出数据的数组。如下所示:[BAT1, LG, yes, [...], 100%, 'battery-full-charged-symbolic']

有什么办法可以做到吗?

EN

回答 2

Stack Overflow用户

发布于 2016-05-31 19:43:02

您的输出是典型的基于列的文本。(分隔符为:)。您可以使用awk将其格式化为所需的格式。

代码语言:javascript
复制
upower cmd...|awk -F':\\s*' '{printf "%s%s",(NR==1?"[":", "), $2}END{print "]"}'

将为您提供:

代码语言:javascript
复制
[BAT1, LG, yes, mar 31 may 2016 12, yes, yes, , yes, yes, fully-charged, none, 50,4088 Wh, 0 Wh, 51,4522 Wh, 48,1 Wh, 6,29 W, 8,313 V, 97%, 100%, 'battery-full-charged-symbolic']
票数 0
EN

Stack Overflow用户

发布于 2016-06-02 15:36:31

您可以尝试执行以下操作:

代码语言:javascript
复制
 var = ( $(upowerOutput | grep -oE ':.+$' | sed -e 's/^[ \t:]*//') )

grep部件获取必需的字段,sed用于修剪前导空格和:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37544585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档