заголовки чисел

Обычный ответ zsh на подобный вопрос:

autoload zmv # best in ~/.zshrc
zmv -v '(**/)(* *)' '$1${2// /-}'

Он заботится о первичной обработке файлов, проверяет конфликты или перезаписи (только для обычных файлов) лучше, чем вы обычно делаете это вручную.

6
24.05.2019, 19:46
2 ответа

Решение (можно немного оптимизировать):

$ cat file | perl -pe 's/^/\t/' | perl -pe 'if (s/^(\t+)//) {
              $n[length($1)-1]++;
              splice @n, length $1;
          }
          print $1, join(".", @n), ": " ' | perl -pe 's/^\t//'


1: Project #1
    1.1: Subproject
        1.1.1: Task
2: Project #2
    2.1: Subproject
        2.1.1: Task
        2.1.2: Task
3: 
0
27.01.2020, 20:27

Перл спешит на помощь!

perl -pe 'if (s/^\t(\t*)//) {
              $n[ length $1 ]++;
              splice @n, 1 + length $1;
          }
          print $1, join(".", @n), ": " ' -- file
  • s/^\t(\t+)//удаляет ведущие вкладки, но захватывает их (без первого )в $1.
  • Массив @nиспользуется для хранения чисел. Число, соответствующее текущей глубине, увеличивается на ++, а остальные числа удаляются (на случай, если вы начинаете новый, менее вложенный раздел ).
7
27.01.2020, 20:27

Теги

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