如何在linux / unix下执行此操作?

时间:2011-03-04 15:27:06

标签: linux shell unix

有一百万个网页,每个网页可能有两个电话号码 格式(XXX)XXX-XXXX,XXX-XXX-XXXX,如何找到它们并将它们更新为统一格式,即1-xxx-xxx-xxxx。如何使用Linux或Unix命令?

3 个答案:

答案 0 :(得分:0)

 cat ph.txt  
111-222-3333-4444
(222)-234-2932-2929
212-939-2929-2929

使用sed可以更改millon网页

 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-/' {} \;

答案 1 :(得分:0)

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

这样的事情。第一个命令将括号的样式更改为连字样式,第二个命令将 1 - 添加到它。

答案 2 :(得分:0)

此命令可以一步使用任一格式:

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

它也将改变其他数字格式,包括“123456-7890”,“(123456-7890”和“123)456-7890”。