Как я могу получить позицию текущего окна в фокусе?

$ sed '/\..*\./s/^[^.]*\.//' file
akamai.com
cloudflare.com
cdn.cloudflare.net

Скрипт sedсначала сопоставляет строки, которые содержат не менее двух точек, используя регулярное выражение \..*\.(, также мог быть написан[.].*[.]). Для строк, соответствующих этому, выполняется замена, которая удаляет все до первой точки включительно.

Использование awk, несколько длинное -закручивание по сравнению с указанным выше:

$ awk -F '.' -vOFS='.' 'NF > 2 { n=split($0, a); $0=""; for (i=2;i<=n;++i) $(NF+1)=a[i] } 1' file
akamai.com
cloudflare.com
cdn.cloudflare.net

Здесь, когда существует более двух полей, разделенных точками -, мы разбиваем текущую строку на точки, а затем повторно -создаем текущую запись из нее, пропуская первое поле. Замыкание 1в конце приводит к печати каждой строки (, измененной или не измененной ).

Сокращение awkаналогично решению sed:

$ awk -F '.' 'NF > 2 { sub("^[^.]*\.", "") } 1' file
akamai.com
cloudflare.com
cdn.cloudflare.net
1
16.07.2020, 19:21
1 ответ

Использование xdotool:

$ xdotool getwindowfocus getwindowgeometry --shell
WINDOW=94371847
X=604
Y=229
WIDTH=1303
HEIGHT=774
SCREEN=0

Если у вас есть координаты верхнего левого угла и размер окна, можно легко вывести запрашиваемые вами координаты:

  • Верхний правый угол будет по координатам X=1907 (604+1303 ), Y=229
  • Нижний левый угол будет по координатам X=604, Y=1003 (229+774)
  • Правый нижний угол будет по координатам X=1907 (604+1303 ), Y=1003 (229+774)

Таким образом, вы можете объединить это в небольшую функцию, которая даст вам 4 координаты.:

showCoords(){
    eval "$(xdotool getwindowfocus getwindowgeometry --shell)"
    topLeft="$X,$Y"
    topRight="$((X+WIDTH)),$Y"
    bottomLeft="$X,$((Y+HEIGHT))"
    bottomRight="$((X+WIDTH)),$((Y+HEIGHT))"
    printf 'top left:%s\ntop right:%s\nbottom left:%s\nbottom right:%s\n' "$topLeft" "$topRight" "$bottomLeft" "$bottomRight"
}

Если вы сейчас запустите showCoords, вы получите:

$ showCoords
top left:604,229
top right:1907,229
bottom left:604,1003
bottom right:1907,1003
3
18.03.2021, 23:19

Теги

Похожие вопросы