2017-06-28 7 views

答えて

2

あなたはsedのにパイプあなたのコマンドをすることができます

yourvar=$(xinput | sed '/Razer/s/.*id=\([0-9]*\).*/\1/') 
  • /Razer/Razerを含む行が
  • s/.*id=\([0-9]*\).*/\1/を発見された:id値をキャプチャし、後方参照を使用してそれを印刷します。
1

grep溶液:ここで、任意の行は、のRazerが含まれている場合、次にIDが印刷されているID続きます。ここで正規表現はフラグgrepのコマンドを使用して使用されます。 \Kは、その左側のすべてを無視するという意味です。

xinput |grep -oP 'Razer.*id=\K[^ ]+' 
12 

gawkのmatch関数の使用:あなたは以下あまりにも行うことができますgawkGNU AWKをした場合、または

awk '/Razer/{match($0,/id=([^ ]+)/,a);print a[1]}' 
12 
0

を。

id=$(xinput | awk '/Razer/{printf "%s",gensub(/^.*id=[[:digit:]]*).*$/,"\\1",$0)}') 
+1

あなたは正規表現を '/^.* id =([[:digit:]] *)。* $ /'に変更しますか? –

+0

@PS:そうです、VMからコマンドをコピーしたときに '= 'がトリムされてしまったようです。 – sjsam

関連する問題