Script para formatar números de telefone

0

Noob aqui, Preciso de ajuda com um script de shell. Eu preciso remover hífens e adicionar abertura entre parênteses em torno do código de área. Eu posso mostrar apenas o código de área adicionando echo {phone: 0: 3} ao script. Qualquer ajuda é muito apreciada.

Escreva um script (chamado phone_num.sh) que solicite aos usuários um número de telefone neste formato xxx-xxx-xxxx

• converta para (xxx) xxx-xxx

• converta para xxxxxxxxx

Exemplo Se a entrada for 123-123-1234, seu código será exibido

(123) 123-1234

1231231234

echo "Please enter phone number in the following format xxx-xxx-xxxx:"
read phone
echo ${phone:0:3}

Isso me dará o código de área, que não estou procurando. Eu preciso de hífens removidos e parênteses adicionados ao código de área.

    
por DSH72 12.11.2015 / 21:23

3 respostas

0

Talvez essas atribuições de variáveis possam ajudá-lo:

$ phonedash=123-123-1234

$ phonenodash="${phonedash//-}"

$ phone=$phonenodash

$ echo $phone
1231231234

$ echo "(${phone:0:3}) ${phone:3:3}-${phone:6:4}"
(123) 123-1234

$ new_phone=$(echo "(${phone:0:3}) ${phone:3:3}-${phone:6:4}")

$ echo $new_phone 
(123) 123-1234
    
por Terrance 12.11.2015 / 22:04
0

Bash + printf

$ VAR="123-456-7890"; printf "( %s ) %s - %s \n %s%s%s\n" ${VAR:0:3} ${VAR:4:3} ${VAR:8:4} ${VAR:0:3} ${VAR:4:3} ${VAR:8:4}
( 123 ) 456 - 7890 
 1234567890
    
por Sergiy Kolodyazhnyy 13.11.2015 / 01:34
0

sed

$ phone="123-456-7890"
$ plainPhone=$(echo $phone | sed "s/-//g")
$ formatedPhone1=$(echo $phone | sed "s/\(.*\)-\(.*\)-\(.*\)/()  - /")
$ formatedPhone2=$(echo $plainPhone | sed "s/\([0-9]\{3\}\)\([0-9]\{3\}\)\([0-9]*\)/()  - /")
$
$ echo $plainPhone 
1234567890
$ echo $formatedPhone1 
(123) 456 - 7890
$ echo $formatedPhone2 
(123) 456 - 7890
    
por Germar 13.11.2015 / 02:30