标题没有公正地回答这个问题。我正在编写一个 shell 脚本,用于 conky,以获取鼠标和键盘电池的状态。以前,我曾经upower
这样做:
dev=`upower -e | grep "mouse_"`
upower -i $dev | grep 'state' | cut '-c26-36'
正如您所看到的,我使用cut
命令来修剪结果,因为它的位置从未改变。
但是今天我发现了 upower 的一个 bug。它无法看到我的鼠标正在充电。因此,我从 github 安装了 solaar,它确实显示了正确的状态。但我不确定如何修剪结果:
solaar show mouse | grep 'Battery'
# outputs "Battery: N/A, recharging."
我不能cut
再使用,因为段“N/A”具有任意长度。
理想情况下,我希望脚本输出第一个逗号后面的任何单词。
我怎样才能做到这一点?
答案1
只需一个grep
:
solaar show mouse | grep -oP 'Battery.*, \K.*'
答案2
这应该可以做到:
solaar show mouse | grep 'Battery' | sed -r 's/^.*, //'
^
:分隔符,匹配字符串的开头;.
:匹配任意字符; :匹配前一个字符的*
任意次数(包括); :匹配;:匹配0
,
,