Как это сделать в Linux / Unix? - PullRequest
1 голос
/ 04 марта 2011

Есть миллион веб-страниц, каждая страница может иметь несколько телефонных номеров с двумя форматы (XXX) XXX-XXXX, XXX-XXX-XXXX, как их найти и обновить в единый формат, то есть 1-xxx-xxx-xxxx. Как это сделать с помощью команд Linux или Unix?

Ответы [ 3 ]

0 голосов
/ 04 марта 2011
sed -e 's/(\([[:digit:]]\{3\}\))\([[:digit:]]\{3\}-[[:digit:]]\{4\}\)/\1-\2/g'  -e 's/[[:digit:]]\{3\}-[[:digit:]]\{3\}-[[:digit:]]\{4\}/1-&/g'

Что-то в этом роде. Первая команда меняет стиль скобок на дефис, вторая команда добавляет к нему 1- .

0 голосов
/ 04 марта 2011

Эта команда работает с любым форматом за один шаг:

sed 's/(\?\([[:digit:]]\{3\}\)[)-]\?\([[:digit:]]\{3\}-[[:digit:]]\{4\}\)/1-\1-\2/g' inputfile

Она также изменит другие числовые форматы, включая "123456-7890", "(123456-7890" и "123)456-7890" .

0 голосов
/ 04 марта 2011
 cat ph.txt  
111-222-3333-4444
(222)-234-2932-2929
212-939-2929-2929

с помощью sed вы можете изменить миллионы веб-страниц

 cat ph.txt  | sed -e 's/^(//;s/)//;s/^/1-/'
1-111-222-3333-4444
1-222-234-2932-2929
1-212-939-2929-2929

для всех html-файлов

find dirname -type f -name "*.html" -exec sed -e 's/^(//;s/)//;s/^/1-/' {} \;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...