Поиск и замена пробела строкой и исключение выталкивания символов

#regex #vim

#регулярное выражение #vim

Вопрос:

Я хотел бы найти строку в определенном месте в моем документе, а затем «вытянуть» текст в строке, чтобы устранить пробелы, возникающие в результате «выталкивания» после замены.

В этом случае нужная мне текстовая строка заменит восемь пробелов на буквальные 000.0000 . Конечно, это увеличит оставшуюся часть строки на восемь пробелов. Итак, мне нужно, чтобы выражение уменьшало оставшуюся часть каждой строки на восемь пробелов.

Это очень единообразно. Пробелы, которые будет занимать строка, составляют от 192 до 199.

Вот пример в соответствии с запросом. Обратите внимание, что определенный идентификатор был заменен на «xxxxxxxxx» в целях безопасности:

 2016102012403654725200509261112005100000000201109081004010700000006210206731030F43.21                                                                                                          F43.21  0100000000006      60009998    9998    9998    0000ENG6201505110000000010000960
  

Правильная строка будет выглядеть следующим образом:

 2016102012xxxxxxxxx195209141112001100000000201210291012020800000006220301301010000.0000                                                                                                        <000.0000>0000000000006      6000070811439998    9998    0000ENG6201212200000000010000100
  

Угловые скобки не следует понимать буквально. Они предназначены просто для выделения строки, в которую я хотел бы поместить, при удалении пробела. Конечно, цель состоит также в том, чтобы вернуть оставшуюся часть строки обратно на восемь символов, как указано ранее

Комментарии:

1. можете ли вы привести пример ПЕРЕД тем, что у вас есть, и ПОСЛЕ того, что вы хотите? P.S, блок кода может помочь вам отформатировать пример.

2. «Replace» (как в :substitute/pat/repl ) уже удаляет исходное совпадение (в отличие от вставки с помощью i ). Если вы замените 8 пробелов на 000.0000 , общая длина строки будет сохранена.

3. Ммм, как любая другая глобальная замена?

4. Хорошо, тогда удаляем мой ответ. пожатие плечами

5. @Galidari — вместо того, чтобы комментировать то, что Сато Кацура не оценил свой ответ, было бы полезнее сообщить ему / нам, что с ним не так, чтобы можно было выработать решение. Возможно, вы имели в виду не то, как это звучит, но ваш комментарий действительно меня загорелся. Если это окажет такое же влияние на других читателей, вы вряд ли получите большую помощь в ближайшее время.