-2

У меня есть файл, который выглядит так:

2067 24311 <hkxhk> {00}
2069 17219 <hkxhk> {00}
2071 20931 <hkxhk> {00}
2073 5557  <hkxhk> {00}
2075 2127  <hkxhk> {00}
2077 20947 <hkxhk> {00}
2081 18088 <hkxhk> {00}

Я хочу заменить первое значение столбца, чтобы оно выглядело как

5 24311 <hkxhk> {00}
5 17219 <hkxhk> {00}
5 20931 <hkxhk> {00}
5 5557  <hkxhk> {00}
5 2127  <hkxhk> {00}
5 20947 <hkxhk> {00}
5 18088 <hkxhk> {00}

Если первый столбец с пробелом был заменен новым значением, в данном случае 5.

1 ответ1

3

Используя поиск и замену:

:%s/^\S*/5/

%s - поиск по всему файлу, ^ - начало строки, \S - любой непробельный символ, \S* - любое количество любых непробельных символов, 5 - ваше новое значение.

Использование макросов:

qq0cw5<Esc>q
:%norm! @q

qq - начать запись макроса с именем q 0 - поставьте курсор в начале строки, cw5 - заменить висящий) один ш Орд с 5 <Esc> - возврат в нормальный режим, q - конец записи макросов;

%norm! - применить команду нормального режима к каждой строке файла, @q - выполнить макрос q (команда нормального режима).

Используя визуальный выбор, предполагая, что первый столбец имеет постоянную ширину (4 символа):

gg0<C-v>G3lc5<Esc>

gg0 - поместить курсор в начало файла, <C-v> - режим выбора начального блока, G - перейти к последней строке, поэтому выберите столбец шириной в один символ (блок H × 1), 3l - перейти на три символа влево, чтобы выбрать Блок H × 4, c5<Esc> - заменить выделение в каждой строке на 5 и вернуться в нормальный режим.

Заключение

Ваша проблема настолько проста, что подход поиска и замены оказался здесь самым простым, в то время как в общем случае запись макроса гораздо удобнее, чем изобретать регулярное выражение.

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