Новичок здесь, я нуждаюсь в помощи со сценарием оболочки. Я должен удалить дефисы и добавить, что открытие заключает в скобки вокруг кода области. Я могу показать просто код области путем добавления эха {phone:0:3} к сценарию. Любая справка очень ценится.
Запишите сценарий (названный phone_num.sh), что пользователи подсказок для номера телефона являются этим форматом xxx-xxx-xxxx
• преобразуйте его в (xxx) xxx-xxx
• преобразуйте его в xxxxxxxxx
Пример, Если бы вход 123-123-1234, Ваш код, отобразился бы
(123) 123-1234
1231231234
echo "Please enter phone number in the following format xxx-xxx-xxxx:"
read phone
echo ${phone:0:3}
Это даст мне код области, который я не ищу. Мне нужны удаленные дефисы, и заключает в скобки добавленный к коду области.
Возможно, эти переменные назначения могли бы выручить Вас:
$ 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
Удар + 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
sed
$ phone="123-456-7890"
$ plainPhone=$(echo $phone | sed "s/-//g")
$ formatedPhone1=$(echo $phone | sed "s/\(.*\)-\(.*\)-\(.*\)/(\1) \2 - \3/")
$ formatedPhone2=$(echo $plainPhone | sed "s/\([0-9]\{3\}\)\([0-9]\{3\}\)\([0-9]*\)/(\1) \2 - \3/")
$
$ echo $plainPhone
1234567890
$ echo $formatedPhone1
(123) 456 - 7890
$ echo $formatedPhone2
(123) 456 - 7890