Использование AWK для изменения поля с условием

Обычно я использую xev , чтобы определить скан-код ключа, а затем сопоставить его с любым действием, которое я хочу, используя либо xdotool , либо XBindKeys .

xev

$ xev | grep -A2 --line-buffered '^KeyRelease' \
    | sed -n '/keycode /s/^.*keycode \([0-9]*\).* (.*, \(.*\)).*$/\1 \2/p'

После выполнения указанной выше команды xev вы увидите маленькое белое окно, которое выскочит. Наведите указатель мыши на это окно, а затем нажмите клавишу проблемы. Название клавиши должно отображаться в терминале при нажатии различных клавиш.

Снимок экрана

ss of xev dialog

сопоставление клавиши с чем-то полезным

Вы можете создавать сочетания клавиш, которые будут запускать команды, например, с помощью xbindkeys . Я успешно использовал XBindKeys в GNOME 3.8.4 именно для этой цели.

Мое использование было скромным, но мне нравится создавать сочетания клавиш для запуска Nautilus с открытыми каталогами.

Пример

Сначала вам нужно убедиться, что установлены пакеты xbindkeys .

Затем вам нужно будет выполнить следующую команду только один раз, чтобы создать файл конфигурации шаблона xbindkeys .

$ xbindkeys --defaults > /home/saml/.xbindkeysrc

Созданный файл можно открыть в текстовом редакторе и добавить следующее правило:

"nautilus --browser /home/saml/projects/path/to/some/dir"
  Mod4+shift + q

После внесения вышеуказанного изменения нам нужно убить xbindkeys , если он уже запущен, а затем перезапустить его.

$ killall xbindkeys
$ xbindkeys

Теперь, когда это работает, я каждый раз набираю Mod + Shift + Q Nautilus откроется с соответствующей открытой папкой.

Использование апплета клавиатуры GNOME

Если вы пройдете через настройки ( Системные настройки Клавиатура , выберите вкладку Ярлыки и добавьте новый пользовательский ярлык для в вашем браузере.

ss #1

Используя шаги 1–5, как показано на схеме, вы также можете сопоставить команду со своим специальным ключом.

0
08.01.2019, 09:27
3 ответа

С помощью GNU sedэто можно сделать следующим образом:

   sed -Ee    's/,([0-9]),/,0\1,/'   input 
0
28.01.2020, 04:04

Я использовал приведенный ниже метод awk для достижения того же

_линукс _пример ~]#awk -F "," '{if(length($2)<=1)print $1",0"$2","$3;else print $0}' file.txt

выход:

 awk -F "," '{if(length($2)<=1)print $1",0"$2","$3;else print $0}' filename

New,09,1
Old,11,0
0
28.01.2020, 04:04
awk -F ',' 'BEGIN { OFS=","};{if(length($2)==1)$2="0"$2;print $0}'
0
28.01.2020, 04:04

Теги

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