Нужно "grep" несколько выходных
Используя эту команду (upower -i /org/freedesktop/UPower/devices/battery_BAT1
) мой терминал показывает следующий вывод:
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']
Есть ли способ сделать это?
2 ответа
Вы можете попробовать что-то вроде:
var = ( $(upowerOutput | grep -oE ':.+$' | sed -e 's/^[ \t:]*//') )
grep
часть выбирает обязательные поля и sed
используется для обрезки ведущих мест и :
,
Ваш вывод - это типичный текст на основе столбцов. (разделитель :
). Вы можете использовать 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']