Выровняйте столбцы в ASCII-файле

В 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 полезный.

12
19.02.2013, 22:03
2 ответа

Попытайтесь делать это в :

Протестировать на STDOUT :

column -t file.txt

Изменить файл:

column -t file.txt > new_file.txt && mv new_file.txt file.txt

Как Вы видите, это - все, в чем Вы нуждаетесь. Это сохраняет Вас много времени, играя со сложным printf приемы.

12
27.01.2020, 19:55
  • 1
    , Эта команда ничего не сделала, она просто отобразила файл в терминале и закончилась. Что я пропускаю здесь? –  Gabriel 19.02.2013, 22:13
  • 2
    Который ОС Вы используете? (поместите его в свой исходный POST), –  Gilles Quenot 19.02.2013, 22:16
  • 3
    я использую Ubuntu 12.10. –  Gabriel 19.02.2013, 22:16
  • 4
    Просто попробованный это снова, ничто. Это должно управлять, чтобы действительно ли изменение было исходным файлом или созданием нового выровненного? –  Gabriel 19.02.2013, 22:21
  • 5
    Посмотрите мое редактирование для редактирования оперативного файла (моя предыдущая версия состояла в том, чтобы только отобразиться в терминале), –  Gilles Quenot 19.02.2013, 22:26

Вы ищете точно именованный инструмент столбца.

Поскольку, что Вы хотите Вас, должны передать Ваши данные по каналу к столбцу как это

cat yourfile | column -s " " -t

Определите разделитель с-s

-s " "

Скажите colume делать таблицу с-t

3
27.01.2020, 19:55
  • 1
    Что делает это "some data\nfoo bar" средний? –  Gabriel 19.02.2013, 22:12
  • 2
    Это не то, что OP спросила ;) –  Gilles Quenot 19.02.2013, 22:13
  • 3
    @sputnick, я зафиксировал его. извините –  Silverrocker 19.02.2013, 22:32

Теги

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