2016-11-28 3 views
1

受信した文字列(XINPUT)からIDを取得します -バッシュ - Aパイプから、私は、次のコマンドを実行すると、それは私に私の現在のマウスの情報を返す

$ xinput --list | grep "Mouse" 
⎜ ↳ A4Tech USB Mouse       id=13 [slave pointer (2)] 

私は何のコマンドを実行しなければならない(多分一緒にしいくつかの正規表現)私は出力を得ることができる13(現在のケースでは)。このような

何か: -

$ xinput --list | grep "Mouse" | ANOTHER_COMMAND 
13 

答えて

2
xinput --list | grep "Mouse" |grep -oP 'id=\K.*?(?=\s)' 

あるいは短い:あなたはsedかのような単一のコマンドにMouseのマッチングとid=13の抽出を組み合わせることができます

xinput --list |grep -oP 'Mouse.*id=\K.*?(?=\s)' 
+0

おかげで男を使います。私は11分でそれを受け入れます。 –

0

awkまたはgrep

$ sed -n "/Mouse/ s/.*id=\([0-9]*\).*/\1/p" file 
13 
1

他のテキスト処理ツールなしで純粋bash溶液。

$ xinput --list | grep "Mouse" | while IFS= read -r string; do [[ $string =~ ^.*id=([[:digit:]]+).*$ ]] && printf "%s\n" "${BASH_REMATCH[1]}"; done 
13 

(または)perl構文

$ xinput --list | grep "Mouse" | perl -lne 'print "$1" if /.*id=(\d+).*/' 
13 
関連する問題