2

Дан файл со строками, похожими на следующие.

Mike,mackenna,mike.mackenna,mike.mackenna@123.com,yes,no,000
Joe,smith,joe.smith,joe.smith@123.com,yes,no,123

Я хотел бы изменить файл так, чтобы строки отображались следующим образом

Mike,Mackenna,mike.mackenna,mike.mackenna@123.com,yes,no,000
Joe,Smith,joe.smith,joe.smith@123.com,yes,no,123

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

1 ответ1

3

Это очень простая команда vim:

:%s/,./\U&

\U означает преобразование следующего в верхний регистр, а & означает весь сопоставленный текст (такой же, как \0)

Поскольку мы не задаем флаг /g , он будет выполняться только при первом совпадении. Вы также можете сделать обычную команду:

:%norm f,lvU

Это похоже на ввод f,lvU на каждой строке вручную: f, найти запятую, l переместиться вправо, vU преобразовать в верхний регистр.

Чтобы сделать это как команду bash:

vim file.txt -c "%s/,./\U&" -c "wq"

или же

vim file.txt -c "%norm f,lvU" -c "wq"

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