如何在终端中输出一个单词

如何在终端中输出一个单词

标题没有公正地回答这个问题。我正在编写一个 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,,

相关内容