例えば、手に入れたい3番目の要素のみ電話をかけると、各回線は次のようになります。
xinput --list --short|grep "slave pointer"
私は出力を取得します:
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=11 [slave pointer (2)]
⎜ ↳ MCE IR Keyboard/Mouse (ite-cir) id=12 [slave pointer (2)]
⎜ ↳ Logitech Unifying Device. Wireless PID:101a id=14 [slave pointer (2)]
「SynPS/2 Synaptics TouchPad」と同じ名前を得たいと思います。
どこかでawkとprintを使用する解決策を見ましたが、これを達成するためのより簡単な解決策はありません。いいえ awk
それともperl
こんなこと?
答え1
愚かなはいこの種の作業は非常に簡単ですが、次のものを使用することもできますcut
。
xinput --list --short|grep "slave pointer" | cut -f 1
これには先行スペースと↳
文字も含まれます。これらの問題を取り除く必要がある場合は、以下を試してください。
xinput --list --short|grep "slave pointer" | cut -f 1 | cut -d" " -f 5-
答え2
3番目の要素は「SynPS / 2 Synaptics TouchPad」ではなく「SynPS / 2」です。
ここで達成できる最善の方法は、先に来る内容を報告することです。id=
これは、これがデバイス名の終わりの場所を識別する唯一の方法であるためです。
xinput list | sed -n 's/^[ ⎜↳]*\(.*[^[:blank:]]\)[[:blank:]]*id=.*slave pointer.*/\1/p'
または、-P
PCREサポート(オプション)で構築されたGNU grepを使用してください。
xinput list | grep -Po '[^ ⎜↳].*?(?=\s+id=.*slave pointer)'