2013-10-01 3 views
0

У меня проблемы с использованием скобок в строке vim. Мне просто нужно добавить набор круглых скобок вокруг 3 цифр, но я не могу найти, где я предполагаю, чтобы правильно разместить их. Так, например; Мне пришлось бы разместить их по номеру телефона, например: 2015551212.Добавить скобку в строку vim

Прямо сейчас у меня есть строки, которые отделяют числа и помещают между ними дефис. Например; 201 555-1212. Поэтому мне просто нужны скобки. Окончательный результат должен выглядеть следующим образом: (201) 555-1212

строка у меня до сих пор это: s/\(\d\{3}\)\(\d\{3}\)/\1 \2-/g

Как я могу идти об этом?

Благодаря

ответ

0

Просто добавьте скобки вокруг \ 1 в вашей замены.

s/\(\d\{3\}\)\(\d\{3\}\)/(\1) \2-/g 

Если вы хотите идти в обратном направлении, и изменение "(800) 555-1212" в "8005551212", вы можете использовать что-то вроде этого:

s/(\(\d\d\d\))\ \(\d\d\d\)-\(\d\d\d\d\)/\1\2\3/g 

Вместо \d\d\d, вам можно использовать \d\{3\}, но это больше проблем с типом.

+0

Большое спасибо, что, похоже, сделали трюк. Мне также было любопытно узнать, как может кто-то пойти повернуть вспять процесс. Поэтому вместо использования s/\ (\ d \ {3 \} \) \ (\ d \ {3 \} \)/(\ 1) \ 2-/g получим: (201) 555-1212. Не могли бы вы просто удалить парсеры, пробел и дефис? s/\ (\ d \ {3 \} \) \ (\ d \ {3 \} \)/\ 1 \ 2/g –

+0

@ehstudent для удаления скобок/тире и т. д. вам не нужна такая сложная команда, просто ': s/\ D // g' – Kent

+0

Рад, что это сработало для вас. Вы можете рассмотреть [прием моего ответа] (http://meta.stackoverflow.com/help/someone-answers). Предложение Кента будет работать для изменения процесса, если в вашем файле есть только телефонные номера. Он удаляет все символы без цифр. –

Смежные вопросы