Замените символ в определенной позиции другим символом, используя регулярное выражение Vim

Все еще регулярное выражение newb, но я все еще учусь. Что я хотел бы сделать, это заменить число "1", выделенное жирным шрифтом, используя Vim и регулярные выражения. Но подвох в том, что он должен делать это не только для этой строки, но и для каждой строки на этой очень хорошей позиции. Другими словами, эта "1" находится на 29-м месте моего плоского файла. Я хочу изменить его на "2". Кто-нибудь может мне помочь? Заранее спасибо.

2017033112xxxxxxxxx19420525212007

3 ответа

%s/\%29c[0-9]/2/g

Он найдет любое число (от 0 до 9) в 29-м столбце и заменит его на 2.

%s/^\(.\{28}\)1/\12/

Это сохранит первые 28 символов каждой строки и заменит "1" на 29-й позиции на "2"

изменения 1 находится на 29-й позиции 2 используя начало матча \zs

%s/^.\{28\}\zs1/2

до

123456789012345678901234567890123
2017033112xxxxxxxxx19420525212007
2017033112xxxxxxxxx19420525292006
2017033112xxxxxxxxx19420525212005

после

123456789012345678901234567890123
2017033112xxxxxxxxx19420525222007
2017033112xxxxxxxxx19420525292006
2017033112xxxxxxxxx19420525222005
Другие вопросы по тегам