如何在bash脚本中替换字符串

时间:2009-12-26 11:04:32

标签: bash scripting

注意:

  • Bash 3.00

如何将此示例字符串 123456789 替换为 123-456-789

#!/bin/sh
# trivial example
read number;
# monotically substitute '-' into string after first three and dix digits 

3 个答案:

答案 0 :(得分:8)

不使用sed

$ number=123456789
$ number=${number:0:3}-${number:3:3}-${number:6:3}
$ echo $number
123-456-789

答案 1 :(得分:7)

phone=`echo $phone | sed 's/\(...\)\(...\)/\1-\2-/'`

答案 2 :(得分:0)

gawk的一种方式

$ echo "123456789" |awk  'BEGIN{FS=""}{ for(i=1;i<=NF;i+=3)s=s$(i)$(i+1)$(i+2)"-";sub(/-$/,"",s);print s } '
123-456-789

$ echo "123456789abcdef" | awk  'BEGIN{FS=""}{ for(i=1;i<=NF;i+=3)s=s$(i)$(i+1)$(i+2)"-";sub(/-$/,"",s);print s } '
123-456-789-abc-def