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

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

2017033112xxxxxxxxx194205252 1 2007

Ответы

Ответ 1

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

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

Ответ 2

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

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

Ответ 3

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

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

перед

123456789012345678901234567890123
2017033112xxxxxxxxx19420525212007
2017033112xxxxxxxxx19420525292006
2017033112xxxxxxxxx19420525212005

после

123456789012345678901234567890123
2017033112xxxxxxxxx19420525222007
2017033112xxxxxxxxx19420525292006
2017033112xxxxxxxxx19420525222005