1

Мне нужно найти строку и заменить ее движущимся индексом (в этом случае шаблон поиска "replaceThis")

Например:

id=replaceThis
......
id=replaceThis
......
id=replaceThis

должен стать

id=0
......
id=1
......
id=2

Моя среда Windows (и Notepad ++), но у меня также есть доступ к Cygwin

1 ответ1

2

Это довольно просто в awk (в Cygwin):

awk '{ while ($0 ~ /replaceThis/) sub(/replaceThis/, counter++) } 1'

В каждой строке, пока она содержит искомую строку, замените (одно вхождение) ее значением счетчика, которое вы затем увеличиваете.  1 в конце - это сокращенный способ сказать awk нужно напечатать строку после того, как она заменила все вхождения (если есть) строки; с таким же успехом можно сказать

awk '{ while ($0 ~ /replaceThis/) sub(/replaceThis/, counter++); print }'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .