如何调整grep命令提取xinput输出中Touchpad的id数字
提取xinput输出中触摸板的ID数字
已知xinput输出中有这样一行:
⎜ ↳ ELAN0518:01 04F3:31FC Touchpad id=11 [slave pointer (2)]
需要把id=后面的数字提取到变量中。之前尝试的命令:
yourvar=$(xinput |grep -oP 'Touchpad.*id=\K[^ ]+') echo $yourvar
输出结果带有多余的11 [slave,可以通过修改grep的正则表达式来只提取数字:
正确命令
yourvar=$(xinput | grep -oP 'Touchpad.*id=\K\d+') echo $yourvar
说明
\K用于重置匹配的起点,让grep只返回\K之后匹配到的内容\d+表示匹配连续的数字,这样就只会提取id=后面的纯数字部分,不会包含后续的空格和[slave等内容
如果系统的grep不支持\d,也可以用[0-9]+替代,效果相同:
yourvar=$(xinput | grep -oP 'Touchpad.*id=\K[0-9]+')
内容的提问来源于stack exchange,提问作者Micklos
相关产品推荐
相关产品推荐

