Я пытаюсь написать простой сценарий командной строки, чтобы исправить некоторые пробелы, и мне нужно заменить вхождения двух пробелов символом табуляции, но только если он появляется в начале строки (с префиксом только для других вкладок.)
Я придумал s/^(\t*) /\1\t/g;
, который отлично работает, если я пробегаю через несколько проходов, но я не знаю достаточно о Perl, чтобы знать, как выполнять цикл, пока строка не изменилась, или если есть способ регулярного выражения справиться с этим.
Я думал только о том, чтобы использовать вид сзади, но он не может быть переменной длины. Я был бы открыт для решения без регулярных выражений, если бы оно было достаточно коротким, чтобы вписаться в сценарий быстрой командной строки.
Для справки, текущий скрипт на Perl выполняется так:
perl -pe 's/^(\t*) /$1\t/g'