Scripting

使用 bash 腳本從字元串中提取數字

  • April 29, 2020

我覺得這應該在某個地方有一個簡單的答案,但我找不到它,所以我在這裡問。

我想編寫一個腳本來禁用我的無線 USB 鍵盤,使用xinput --disable.

我已經得到xinput list | grep 2.4G\ Composite\ Devic了以下輸出。

↳ 2.4G Composite Devic id=29 [slave keyboard (3)]

現在我被困在如何在id=可以通過管道傳輸的純數字形式之後獲得在這種情況下的 29xinput --disable

選項的參數xinput接受設備名稱作為字元串:

$ xinput --list --id-only '2.4G Composite Devic'
29
$ xinput --disable '2.4G Composite Devic' # Equivalent to 'xinput --disable 29'
  • 必須是完整名稱(不能包含萬用字元或正則表達式模式)

以防萬一您仍然需要正則表達式,這裡是基於 perl 的解決方案:

echo "↳ 2.4G Composite Devic id=29   [slave  keyboard (3)]" | perl -pe 's/.*id=(\d+)\s.*/$1/g'

引用自:https://unix.stackexchange.com/questions/583243