Regex'in grep içinde olmasına izin vermeden çok iyi değil ama ihtiyacım olana yakınım. Ben bu ids ayıklamak istediğim bu fare var (2 ids işaretçi ve bir klavye olarak basılmış) ve ben sadece işaretçi değerleri için kimlik numaralarını yazdırmak için grep yapamıyorum.Grep çıkışı yalnızca normal ifadelerle eşleşiyor
xinput --list --short | grep -oP 'Razer.*id=\K([0-9]+)(.*?)pointer'
ama bu baskılar:
20 [slave pointer 21 [slave pointer
⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ ELAN Touchscreen id=12 [slave pointer (2)] ⎜ ↳ DLL06E4:01 06CB:7A13 Touchpad id=13 [slave pointer (2)] ⎜ ↳ Logitech Gaming Keyboard G910 id=17 [slave pointer (2)] ⎜ ↳ Razer Razer DeathAdder Chroma id=20 [slave pointer (2)] ⎜ ↳ Razer Razer DeathAdder Chroma id=21 [slave pointer (2)] ⎜ ↳ Logitech Logitech G633 Gaming Headset id=22 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Power Button id=6 [slave keyboard (3)] ↳ Video Bus id=7 [slave keyboard (3)] ↳ Video Bus id=8 [slave keyboard (3)] ↳ Power Button id=9 [slave keyboard (3)] ↳ Sleep Button id=10 [slave keyboard (3)] ↳ Integrated_Webcam_HD id=11 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=14 [slave keyboard (3)] ↳ Dell WMI hotkeys id=16 [slave keyboard (3)] ↳ Logitech Gaming Keyboard G910 id=18 [slave keyboard (3)] ↳ Razer Razer DeathAdder Chroma id=19 [slave keyboard (3)]
yolu bu komutu kullanarak aşağıdaki gibidir:
giriş metnidir
Yalnızca bunu 20
ve 21
yazdırabilir miyim? pointer
gerekli çünkü sadece işaretçilerin kimliklerini istiyorum.
Eğer regex ile zor bir zaman varsa , belki de 'xinput --list --short | grep -i razer | kesim -d = f2 | cut -d "" -f1 "daha düzdür. – Tomalak