2016-05-31 191 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用來調整前導空格和: