2016-04-13 17 views
1

Nicht sehr gut mit Regex geschweige denn Regex in Grep aber ich bin nah dran, was ich brauche. Ich habe diese Maus, die ich es Ids extrahieren möchte (es hat 2 IDs als Zeiger und eine als Tastatur gedruckt) und ich kann Grep nicht nur die ID-Nummern für Zeigerwerte drucken.Grep Ausgabe nur die Regex passt

Der eingegebene Text ist wie folgt:

⎡ 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)]

So wie ich nahe kam wird mit diesem Befehl:

xinput --list --short | grep -oP 'Razer.*id=\K([0-9]+)(.*?)pointer'

aber diesen Druck:

20 [slave pointer 21 [slave pointer

Wie kann ich es nur drucken 20 und 21? pointer wird benötigt, weil ich nur die IDs von Zeigern möchte.

+0

Wenn Sie haben eine harte Zeit mit regex , vielleicht 'xinput --list --short | grep -i razer | geschnitten -d = f2 | cut -d "" -f1 "ist geradliniger. – Tomalak

Antwort

2

Sie Look-Ahead in Ihrem regex verwenden Anwesenheit von pointer nach dem id Zahlen zu behaupten, ohne es wirklich passend:

xinput --list --short | grep -oP 'Razer.*id=\K(\d+)(?=.*pointer)' file 

Ausgang:

20 
21