В Vim Вы могли добавить номера строки к фактическому тексту буфера как это:
:%s/^/\=printf('%5d. ',line('.'))
\=
(см. :help sub-replace-expression
) позволяет замещающей строке рассматриваться как выражение VimL. Выражение, используемое здесь, является простым форматированием текущего номера строки.
Вы могли сделать это немного более необычным путем автоматического вычисления и использования минимальной ширины (вместо “твердый кодированный” 5, как выше) для текущего количества строк в файле:
:%s/^/\=printf('%*d. ',len(line('$')),line('.'))
Или, лево-выровненный по ширине:
:%s/^/\=printf('%d.%*s ',line('.'),len(line('$'))-len(line('.')),'')
Конечно, если Вы просто хотите видеть номера строки и не хотите иметь их на самом деле в данных буфера, затем необходимо просто использовать
:set number
От оболочки Вы могли бы найти cat -n
или pr -tn
полезный.
Попытайтесь делать это в оболочке:
Протестировать на STDOUT
:
column -t file.txt
Изменить файл:
column -t file.txt > new_file.txt && mv new_file.txt file.txt
Как Вы видите, это - все, в чем Вы нуждаетесь. Это сохраняет Вас много времени, играя со сложным printf
приемы.
Вы ищете точно именованный инструмент столбца.
Поскольку, что Вы хотите Вас, должны передать Ваши данные по каналу к столбцу как это
cat yourfile | column -s " " -t
Определите разделитель с-s
-s " "
Скажите colume делать таблицу с-t