に割り当てる:サブストリングが、私は次のコマンドを実行し、変数
xinput | grep Razer
出力を変数に割り当て、私はIDを取得することができる方法
ですので、私はすることができますスクリプトの後半でそれを再使用しますか? IDは変化しています。
に割り当てる:サブストリングが、私は次のコマンドを実行し、変数
xinput | grep Razer
出力を変数に割り当て、私はIDを取得することができる方法
ですので、私はすることができますスクリプトの後半でそれを再使用しますか? IDは変化しています。
あなたはsedのにパイプあなたのコマンドをすることができます
yourvar=$(xinput | sed '/Razer/s/.*id=\([0-9]*\).*/\1/')
/Razer/
:Razer
を含む行がs/.*id=\([0-9]*\).*/\1/
を発見された:id値をキャプチャし、後方参照を使用してそれを印刷します。grep
溶液:ここで、任意の行は、のRazerが含まれている場合、次にIDが印刷されているID続きます。ここで正規表現はフラグgrep
のコマンドを使用して使用されます。 \K
は、その左側のすべてを無視するという意味です。
xinput |grep -oP 'Razer.*id=\K[^ ]+'
12
gawk
のmatch関数の使用:あなたは以下あまりにも行うことができますgawk
GNU AWK
をした場合、または
awk '/Razer/{match($0,/id=([^ ]+)/,a);print a[1]}'
12
を。
id=$(xinput | awk '/Razer/{printf "%s",gensub(/^.*id=[[:digit:]]*).*$/,"\\1",$0)}')
あなたは正規表現を '/^.* id =([[:digit:]] *)。* $ /'に変更しますか? –
@PS:そうです、VMからコマンドをコピーしたときに '= 'がトリムされてしまったようです。 – sjsam