Você pode usar o awk:
lsusb -t | awk -F '[:,]''/Class=Mass/{print $2}'
Procuramos por Class=Mass
, o delimitador é :
e ,
se encontrarmos Class=Mass
, depois imprimimos a coluna dois da saída, o que o deixará com:
Dev 5
Estou fazendo um script para determinar se um dispositivo USB conectado é um dispositivo de armazenamento em massa e, em caso afirmativo, armazene o número do dispositivo. Eu também gostaria que funcionasse com vários pen drives USB conectados.
Aqui está a ideia básica:
Se lsusb -t | grep Class=Mass
corresponder, salve o ID do dispositivo como uma variável.
|__ Port 4: Dev 5, If 0, Class=Mass Storage, Driver=usb-storage, 480M
^^^^^
Em outras palavras: Como eu pego "Dev x", se as palavras depois de corresponderem à minha pesquisa?
Eu não sou tão experiente com Linux, bash ou regex. Se isso é estranho ou impraticável, então estou aberto a outras sugestões.
Tags bash usb grep regular-expression