有人可以解释如何将变量正确传递到sed
并仅返回881 747
吗?我试过了:
coords=$(xdotool getmouselocation) #x:881 y:747 screen:0 window:56623110
echo $(coords)|sed '/[[:digit:]]/'
由于一些原因失败了(我无法弄清楚如何修复):
sed
/:[0-9]+\sy:[0-9]+/
失败甚至更糟。我是否必须运行sed两次,一次获取x值,一次获得y值?答案 0 :(得分:1)
这应该按照你的要求做。
coords="x:881 y:747 screen:0 window:56623110"
echo ${coords//:/} | sed 's/[[:alpha:]]//g' | awk '{print $1,$2}'
881 747 #output
要打破它:
echo ${coords//:/}
正在使用bash字符串替换从输出字符串中删除:
的所有实例。
sed 's/[[:alpha:]]//g'
从输出中删除所有[[:alpha:]]
个字符。
awk '{print $1,$2}'
打印前两个字段;在这种情况下881 747
答案 1 :(得分:1)
只能使用awk(不需要使用sed)来完成。
coords="x:881 y:747 screen:0 window:56623110"
echo $coords | awk -F "[: ]" '{print $2,$4;}'
输出:
881 747