我尝试让这个脚本来打开Wacom数位板领域,使用xsetwacom配置平板电脑的IM,
这是脚本我尝试如何使外观(它的工作原理,但只是第一片)
#!/bin/bash
variable =`xsetwacom --list | awk '/stylus/ {print $7}'`
xsetwacom --set $variable area 123 123 123 123
这是xsetwacom --list的输出看起来如何
Wacom Intuos S Pad pad id: 21 type: PAD
Wacom Intuos S Pen stylus id: 22 type: STYLUS
Wacom Intuos S Pen eraser id: 23 type: ERASER
并用不同的平板连接
Wacom Bamboo 2FG 4x5 Pad pad id: 21 type: PAD
Wacom Bamboo 2FG 4x5 Ped stylus id: 22 type: STYLUS
Wacom Bamboo 2FG 4x5 Pen eraser id: 23 type: ERASER
Wacom Bamboo 2FG 4x5 Finger touch id: 24 type: TOUCH
所以,当我把另一个平板电脑中,“$变量”,我得到的值改变,因为那里有更多的话,我怎么能解决这个问题,值IM寻找的是手写笔的ID号,谢谢!
Bash有内置的正则表达式的支持,可以使用如下:
id_re='id:[[:space:]]*([[:digit:]]+)' # assign regex to variable
while IFS= read -r line; do
[[ $line = *stylus* ]] || continue # skip lines without "stylus"
[[ $line =~ $id_re ]] || continue # match against regex, or skip the line otherwise
stylus_id=${BASH_REMATCH[1]} # take the match group from the regex
xsetwacom --set "$stylus_id" area 123 123 123 123 </dev/null
done < <(xsetwacom --list)
在https://ideone.com/amv9O1你可以看到这个运行(从标准输入,而不是输入来xsetwacom --list
,当然),并设置stylus_id
为您的线路。
假设你想要得到的ID,你可以让他们的第三个字段的端部( $(NF - 2)
xsetwacom --list | awk '/stylus/ {print $(NF - 2)}'
或者你可以改变字段分隔符2+空间,只是打印第二场:
xsetwacom --list | awk --field-separator="[ ]{2,}" '/stylus/{print $2}'
这取决于如何xsetwacom
将改变输出更长的名称。
出于好奇,这里的“纯awk的”版本:
yes | awk '
{ if (!( "xsetwacom --list" | getline )) { exit; } }
$NF == "STYLUS" { system("xsetwacom --set " $(NF-2) " area 123 123 123 123") }
'
仅计算领域从末端而不是从前面:
awk '/stylus/{print $(NF-2)}'
例如:
$ cat file
Wacom Intuos S Pad pad id: 21 type: PAD
Wacom Intuos S Pen stylus id: 22 type: STYLUS
Wacom Intuos S Pen eraser id: 23 type: ERASER
Wacom Bamboo 2FG 4x5 Pad pad id: 21 type: PAD
Wacom Bamboo 2FG 4x5 Ped stylus id: 22 type: STYLUS
Wacom Bamboo 2FG 4x5 Pen eraser id: 23 type: ERASER
Wacom Bamboo 2FG 4x5 Finger touch id: 24 type: TOUCH
$ awk '/stylus/{print $(NF-2)}' file
22
22
这样的事情?
$ ... | awk '/stylus/{for(i=1;i<NF;i++) if($i=="id:") {print $(i+1); exit}}'
发现旁边的标记id:
文章来源: Extract a column in bash even if the number of columns before it can change