Buenas!.

A la hora de poder ver el resultado sobre las características del ratón, usé el comando grep buscando la palabra Mouse.
El problema es que eso solo me mostraba la línea que coincidía con la palabra Mouse.

Entonces me di cuenta de que grep tiene la opción. Before -B y After -A
Detrás de esta línea de argumentos le añades un número y te mostrará los resultado anteriores y posteriores incluyendo la búsqueda.
Por ejemplo:

Esto me mostraba solo el lugar de la coincidencia.

grep Mouse < dispositivos.txt


Luego pude usar algo como esto:

grep Mouse -B5 -A12 < dispositivos.txt


Resultado fue:

Citar:

Disable-w-typing: n/a
Accel profiles: n/a
Rotation: n/a

Device: Logitech USB-PS/2 Optical Mouse
Kernel: /dev/input/event4
Group: 5
Seat: seat0, default
Capabilities: pointer
Tap-to-click: n/a
Tap-and-drag: n/a
Tap drag lock: n/a
Left-handed: disabled
Nat.scrolling: disabled
Middle emulation: disabled
Calibration: n/a
Scroll methods: button


Así podía encontrar el lugar desde comenzaba la descripción y donde acababa.
Lo curioso es que había una línea en blanco entre el resumen de los dispositivos.
Pero no tenía ni idea de como decir eso en una línea de comandos.

Al final opte por un bucle, que me costó entender la condicional.
La primera usa dos corchetes y la siguiente solo una.
Si no se usaba dos corchetes en la primera parece que buscaba encontrar un comando llamado como el contenido de la expresión.

#!/bin/bash

# Comprobar si existe el comando en el sistema
# Vamos a comprobar y a usar el comando libinput para mostrar información del ratón

if [ -a "/usr/bin/libinput" ]; then
echo "El comando libinput existe en su sistema."
echo "El comando necesita permiso de super usuario para ejecución"
while IFS= read -r line
do
# Se comprueba si la línea de texto leída contiene la palabra Mouse
if [[ "$line" == *"Mouse"* ]]; then
echo "$line"
while IFS= read -r line2
do
# Se comprueba que la línea de texto leída no es nula y tiene una longitud superior a cero
if [ -n "$line2" ]; then
echo "$line2"
else
# Esto parece que rompe los dos bucles
break
fi
done
fi
done < <(sudo libinput list-devices)
else
echo "El comando libinput no existe en su sistema."
echo "Ejecute primero: sudo apt-get install libinput"


Entonces el primer bucle busca la palabra Mouse y luego otro bucle para llegar hasta donde se encuentra la línea en blanco.
Pero no tenía ni idea si el primer break rompería desde el bucle interno hasta el externo. Lo normal hubiese sido el interno.

No encontré una forma más sencilla. A lo mejor usando awk o sed. Complicando con signos y símbolos.
Podía haber usado un script hecho en gambas, pero no es un lenguaje que venga por defecto en el sistema.

Saludos