# array declaration
arr=()
#Function to read data from file a and add into array
fun_add_in_array()
{
input=$1
while IFS=',' read -r f1 f2
do
echo "Element1 : $f1"
echo "Element2 : $f2"
arr+=( "$f1" )
done < "$input"
}
#Function to print a array
fun_read_array()
{
arr=("$@")
for i in "${arr[@]}"
do
echo $i
done
}
Вы можете использовать sed
для целей:
xinput | sed '/Touchpad/s/.*id=\([0-9]*\).*/\1/;t;d'
Это заменит все содержимое строк, в которых найден шаблон Touchpad
, номером в шаблоне id=digits
за счет использования группы захвата \([0-9]*\)
, тем самым фактически печатая только часть идентификатора и игнорируя любые не -соответствующие строки (часть ;t;d
в конце ).
Используйте приведенную ниже единственную команду awk, она будет работать нормально
Проверено, работает нормально
xinput |awk '/Touchpad/{for(i=1;i<=NF;i++){if ($i ~ /id/){print $i}}}'
выход
id=15
Для xinput
команды, которым требуется устройство аргумент (, как и в --enable device
), могут использовать имя или идентификатор устройства.
Например, оба из них были бы эквивалентны:
xinput --enable 'DLL07BE:01 06CB:7A13 Touchpad'
xinput --enable 15
Если вы заранее не знаете полное имя устройства, используйте выходные данные xinput --list --name-only
для поиска подходящего имени:
xinput --list --name-only | grep Touchpad
xinput --enable "$(xinput --list --name-only | grep Touchpad | head -n 1)"
Как описано в man 1 xinput
, опция --list
также принимает аргумент устройства. Таким образом, вы можете напечатать идентификатор с именем:
xinput --list --id-only 'DLL07BE:01 06CB:7A13 Touchpad'
или имя с идентификатором:
xinput --list --name-only 15