2016-05-31 109 views
0

使用该命令(upower -i /org/freedesktop/UPower/devices/battery_BAT1)我的终端显示下面的输出:需要的“grep”多输出

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']

任何方式来做到这一点?

+0

你的意思是一个Bash数组吗? –

回答

0

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

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

会给你:

[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

我试过了,但没有奏效。该命令什么都不返回。 – Viral

+0

哦,现在它可以工作。但我真正想要的是将所有这些输出与数组一起存储。有可能吗? – Viral

+0

我不知道你在说什么“阵列”的背景。它提供了与您所需的相同的输出格式。 – Kent

0

你可以尝试这样的:

var = ($(upowerOutput | grep -oE ':.+$' | sed -e 's/^[ \t:]*//')) 

grep部分获取所需的字段和sed用来调整前导空格和: