Выравнивание столбцов с помощью awk

Вот как работает grub-mkconfig: он автоматически создает пункты меню GRUB для каждого обнаруженного ядра. Однако, если вы знаете, чего хотите и что делаете, вам вообще не нужно использовать Простую конфигурацию, так как вы можете написать свой grub.cfgнапрямую.

grub-mkconfigимеет некоторые ограничения. При добавлении дополнительных пользовательских пункты меню в конец списка можно сделать, отредактировав /etc/grub.d/40_customили создание /boot/grub/custom.cfg, изменив порядок пунктов меню или изменение их заголовков может потребовать сложные изменения в сценариях оболочки, хранящихся в /etc/grub.d/. Это может быть улучшены в будущем. Между тем, те, кто считает, что это проще написать grub.cfgнапрямую, рекомендуется это делать (см. Загрузкаи Шеллоподобные сценарии), а также для отключения любой предоставленной системы по их распределению для автоматического запуска grub-mkconfig.

Там у вас может быть только один пункт меню (отключение меню) с любыми простыми настройками. Вы можете сказать, что хотите загрузить это ядро ​​отсюда, и все.

Один меню { }может состоять из 5 строк, а не из 200.

Имейте в виду:

  • Сначала проверьте свой пользовательский пункт меню, добавив его в пользовательские записи.
  • Если вы отключите grub-mkconfigв своей системе, вам потребуется вручную обновлять grub.cfgвсякий раз, когда вы захотите обновить ядро.

1
03.05.2019, 01:39
2 ответа

Вы можете повторно -напечатать первый столбец, выровняв -по левому краю в достаточно широком поле:

$ awk '{$1 = sprintf("%-30s", $1)} 1' file
super+t                        sticky toggle
super+Shift+space              floating toggle
super+Shift+r                  restart
super+Shift+d                  mode $mode_launcher
super+Shift+c                  reload
super+r                        mode resize
super+Return                   i3-sensible-terminal
super+q                        kill
super+n                        Nautilus scratchpad show
super+m                        neomutt scratchpad show
super+minus                    scratchpad show
super+f                        fullscreen toggle
super+c                        bar mode toggle
super+button2                  kill
super+alt+x                    systemctl -i suspend
super+alt+v                    cmus
super+alt+m                    neomutt
super+alt+c                    ~/bin/editinvim
super+alt+b                    ranger

Если вы хотите автоматически выбрать подходящую ширину на основе длины столбца 1, то:

awk '
  NR==FNR {w = length($1) > w ? length($1) : w; next} 
  {$1 = sprintf("%-*s", w+4, $1)} 
  1
' file file
10
27.01.2020, 23:14

Кроме того, команду column -tможно использовать для форматирования текста в столбцах.

column -t file

Разделитель столбцов по умолчанию — " ". В примере строки имеют несколько пробелов, но только первый разделяет столбцы :, мы можем заменить первый на «:» и использовать его в качестве разделителя.

$ sed 's/ /:/1' file | column -s ':' -t
super+t            sticky toggle
super+Shift+space  floating toggle
super+Shift+r      restart
super+Shift+d      mode $mode_launcher
...
7
27.01.2020, 23:14

Теги

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