$ awk -v OFS='\t' '/^bindsym/ { key = $2; sub(".*#", ""); print key, $0 }' file
$mod+F2 Open terminal
$mod+p Popup Dictionary
$mod+Mod1+l Dmenu for my books collection
Mod1+Control+b nnn file browser
Здесь используется awk
для извлечения второго поля в каждой строке, начинающейся с bindsym
, в переменную key
. Затем он удаляет все до #
включительно в строке и печатает key
и оставшуюся часть строки с табуляцией в качестве разделителя.
Альтернативное форматирование вывода:
$ awk '/^bindsym/ { key = $2; sub(".*#", ""); printf("%-20s\t%-20s\n", key, $0) }' file
$mod+F2 Open terminal
$mod+p Popup Dictionary
$mod+Mod1+l Dmenu for my books collection
Mod1+Control+b nnn file browser
Логика такая же, но вывод выделяет 20 символов для каждого из двух (левых -выравниваемых )полей и помещает табуляцию в -между ними (для надежности ).
Меня смутил sshd, потому что без параметра пользовательской среды, установленного в no, мои файлы не были найдены в /usr/local/bin, даже если я правильно установил переменную PATH в /etc/profile и /etc/PATH. Если я скомпилирую ssh с
--with-default-path=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin
в конфигурации мои файлы были найдены в /usr/local/bin Так что думаю правильный ответ /etc/profile и /etc/PATH для инициализации среды (, если вы хотите передать другие переменные в программы, необходимо отредактировать /etc/rc.config.d/nameprogram
или сценарий инициализации программы.