还是电话操纵。 我有一个电话号码列表如下:
(855) 422-6932
(899) 991-9054
(855) 912-7326
(833) 390-8072
(867) 934 2368
(898) 731 7056
(899) 251 5372
(855) 137-6285
(855) 294-5537
(844) 680-7479
如果您注意到第5到7行的电话号码模式,则它没有“ - ” 如何使用sed或awk插入“ - ”?
如果可能的话,我觉得我必须做一些嵌套的sed条件替换。
任何人都可以帮忙吗?
答案 0 :(得分:4)
您可以告诉sed
将第二个空格替换为连字符:
sed 's/ /-/2' file
结果:
(855) 422-6932
(899) 991-9054
(855) 912-7326
(833) 390-8072
(867) 934-2368
(898) 731-7056
(899) 251-5372
(855) 137-6285
(855) 294-5537
(844) 680-7479
答案 1 :(得分:3)
这与你提出的其他问题很接近。尝试修改你拥有的东西。
awk '!/-/ {$0=$1 " " $2 "-" $3}1'
(855) 422-6932
(899) 991-9054
(855) 912-7326
(833) 390-8072
(867) 934-2368
(898) 731-7056
(899) 251-5372
(855) 137-6285
(855) 294-5537
(844) 680-7479
答案 2 :(得分:1)
使用这个perl one-liner:
perl -pe "s/(\(\d{3}\) \d{3})[ -](\d{4})/$1-$2/g" <in.txt >out.txt
根据操作系统和shell,您可能需要使用单引号来保留反斜杠和$ chars。
答案 3 :(得分:1)
使用perl,您基本上可以使用正确的格式重写每一行。我假设每行上正好有3组数字:
perl -ne 'printf "(%s) %s-%s\n", (/\d+/g)' file
使用-i
进行文件的就地编辑