'64'ü eşleştirmeye çalışıyorum:
state 0x0, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
ve çıkartın.
denedim
echo "$line" | sed -n -e 's/^.*keycode\s\([0-9]+\).*$/\1/p'
Aklımda hangi çalışması gerekir, ama işe yaramaz.
Biraz daha test ettikten sonra, basamağı girmeye başlayana kadar regex başarıyla eşleşiyor.
echo "$line" | sed -n -e 's/^.*keycode\s.*/test/p'
iyi çalışıyor, ama
echo "$line" | sed -n -e 's/^.*keycode\s\d.*/test/p'
echo "$line" | sed -n -e 's/^.*keycode\s[0-9].*/test/p'
ve boşluktan hemen sonra bir rakam olmasına rağmen ilgili çalışmaz.
Belli bir şeyi mi özlüyorum?
[0-9]
Benim için çalışıyor, normal ifadenin bir parçası olarak, iki basamaklı sayıyı giriş dizesinden çekmeme izin veriyor. echo "state 0x0, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES," | sed -n -e 's/^.*keycode\s\([0-9]\{2\}\).*$/\1/p'
çıktılar 64
.
\+
. Senin ne sed --version
? sed (GNU sed) 4.4
İşte.
[[:digit:]]
, \ d desteklenmiyor ancak [0-9], çalışmamasının herhangi bir nedeni olmalı mı?