Я бы использовал perl
:
perl -ne 'if(/<table role="grid">/){$i++;$k=1}
if($i==2 && $k==1){print}
if(/<\/table>/){$k=0;}' file
perl -ne
: прочитать ввод файл построчно и примените сценарий, заданный параметром -e
, к каждой строке. if (/ /) {$ i ++; $ k = 1} : если эта строка соответствует , добавьте 1 на значение $ i
и установите $ k
на 1.
if ($ i == 2 && $ k == 1) {print}
: if текущее значение $ i
равно 2, а значение $ k
равно 1 (так, если мы находимся между и a
, и если это второй раз, когда был замечен), вывести текущую строку.
if (/ <\ / table> /) {$ k = 0;}
: установить $ k
обратно в 0, если эта строка соответствует
.
2
bwrabbit
13.03.2018, 02:02
Ссылка
1 ответ
Я подтвердил все нижеперечисленное на ThinkPad P1 с Pop! _ОС (производная Ubuntu 18.10 )в GNOME.
Поиск кодов ключей
Запустите xev
в терминале и начните печатать. Данных много, но что вы ищет обычно вторая 3-я строка блока после словаkeycode
:
KeyRelease event, serial 37, synthetic NO, window 0x3c00001,
root 0x1a5, subw 0x0, time 291165043, (404,446), root:(454,634),
state 0x0, **keycode 107** (keysym 0xff67, Menu), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
Есть некоторые клавиши, для которых xev
не печатается код клавиши, например Print Screen. Для этого вы можете просмотреть файл, созданный в следующем разделе.
Необходимые инструменты
xmodmap
Сброс текущих привязок
Вы можете вывести текущие сопоставления в стандартный вывод, запустив xmodmap -pke
. Вы избавите себя от некоторых потенциальных головных болей, предварительно сделав резервную копию макета xmodmap
. в файл:
xmodmap -pke ~/.Xmodmap.orig
Этот файл также служит простой справочной информацией о том, где находятся ключи, если они не отображаются. в xev
.
cat ~/.Xmodmap | grep Print
keycode 107 = Print Sys_Req Print Sys_Req
Команда для быстрого изменения привязки
Вы это уже знаете, но просто подтверждаю:
xmodmap -e "keycode [number] = [keys...]"
Это временно переназначит ключ для вашего сеанса. Бег xmodmap -pke
снова отразит эти изменения.
Синтаксис
xmodmap
использует столбцы, разделенные пробелом -, для обозначения различных модификаторов/режимов. для keycode
.Слева направо они:
- Ключ сам по себе
- Shift + клавиша
- Переключатель режимов _+ клавиша
- Режим _переключатель + шифт + клавиша
Например:
xmodmap -e "44 = j J Down Next"
Это устанавливает клавишу "J" "j" сама по себе, "J" при нажатии с Shift, стрелка вниз при нажатии с переключателем режима _и Page Down при нажатии с переключателем режима _и Сдвиг.
Mode_switch
Mode_switch
— это отдельный общий модификатор, аналогичный Shift. я не думаю многие клавиатуры уже поставляются со специальной клавишейMode_switch
(AltGr ), но вы можно настроить с помощью xmodmap
.
# Set left Alt as Mode_switch
xmodmap -e "keycode 108 = Mode_switch"
Запуск скриптов с настройками GNOME илиxbindkeys
Я не знаю, как запускать произвольные скрипты с помощью xmodmap
. Есть, однако, несколько простых способов.
Из конфигурации i3
В документации i3 есть примеры по используя директивы bindsym
/ bindcode
в вашем файле ~/.config/i3/config
.
bindcode 214 exec /home/you/some_script.sh
Я еще не настроил i3, не проверял, но прямо от пользователя руководство. Я предполагаю, что коды совпадают с тем, что вы найдете в xmodmap
и у друзей.
ГНОМ
Проверьте Настройки > Устройства > Клавиатура > Сочетания клавиш . Нажмите плюс и добавить комбинацию скрипт/ключ. Обратите внимание, что вы должны указать полный путь (от корня )до скрипт и убедитесь, что он исполняемый.
В моем тестировании GNOME не позволяет использовать некоторые клавиши, такие как Home и End.
xbindkeys
xbindkeys
может перехватить любой вместо этого нажмите клавишу и запустите скрипт.
Также просмотрите несколько примеров файлов конфигурации, запустите xbindkeys --defaults > $HOME/.xbindkeysrc
и просмотрите файл.
Обратите внимание, что он не открывает терминал, а просто выполняет файл в процессе.
Ваши примеры
Вот фактические команды для выполнения того, что вы хотите. Обязательно подтвердите свое ключевые коды, это как раз то, что у меня есть.
Шаг 1 :Переназначить с помощьюxmodmap
# print screen --> use as another super key, print screen with Mode_switch
# Note: On GNOME, it appears Super_R doesn't work the same as Super_L
xmodmap -e "keycode 107 = Super_L NoSymbol Print Sys_Req"
# left alt --> mode_switch key
xmodmap -e "keycode 64 = Mode_switch NoSymbol"
# escape key --> tilde and backtick
# Note: this can have unexpected consequences if you use `xcape` to map
# Control/Caps to send Escape when tapped. It will instead send `/~ when you
# press Caps Lock attempting to get Escape.
# A solution might be to switch the keys around and use a non-op key as a
# placeholder, like in the xcape README
# https://github.com/alols/xcape/blob/master/README.md#examples
xmodmap -e "keycode 9 = grave asciitilde grave asciitilde"
# original tild and back tick --> backspace
xmodmap -e "keycode 49 = BackSpace"
# backspace --> delete, and
# mode_switch + backspace --> home
xmodmap -e "keycode 22 = Delete NoSymbol Home"
# mode_switch + delete --> end
# Note: This won't work when combined with `xbindkeys`, since `xbindkeys`
# hijacks the entire Delete key from X.
xmodmap -e "keycode 119 = Delete NoSymbol End"
# mode_switch + h, j, k, l --> additional arrow keys
# Bonus: capital J/K are Page Down/Up, H/L are Home/End with Mode_switch + Shift
xmodmap -e "keycode 43 = h H Left Home"
xmodmap -e "keycode 44 = j J Down Next"
xmodmap -e "keycode 45 = k K Up Prior"
xmodmap -e "keycode 46 = l L Right End"
Шаг 2 :Сохранить изменения
# Write current config to a file
xmodmap -pke > ~/.Xmodmap
# Load the config into xmodmap
xmodmap ~/.Xmodmap
Добавление последней команды выше к вашему ~/.profile
или ~/.bash_profile
будет загружайте его всякий раз, когда вы входите в систему, при условии, что у вас стандартная настройка. Для меня это было немного медленно, вы можете просто добавить все команды xmodmap -e
вручную.
Шаг 3 :Установите привязки для пользовательских сценариев с помощьюxbindkeys
Убедитесь, что xbindkeys
установлен, и добавьте его в свой файл ~/.xbindkeysrc
:
# disable home, end, insert, delete keys and map them to run some script, and
"some-script-in-PATH"
Home
"some-script-in-PATH"
End
"some-script-in-PATH"
Insert
"some-script-in-PATH"
Delete
Затем перезагрузите xbindkeys -p
.
Шаг 4 :Шаг 4 отсутствует
Дополнительная литература
Вики-страница Emacs о переназначении
Вики-страница Emacs на xmodmap
Arch Wiki о Xmodmap
Подробнее о режиме _включить StackExchange
Более полное и трудоемкое решение состоит в том, чтобы просто написать свой собственный клавиатура макеты .
6
shender
27.01.2020, 22:09
Ссылка
Теги
Похожие вопросы