代码之家  ›  专栏  ›  技术社区  ›  Aaron

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

  •  1
  • Aaron  · 技术社区  · 16 年前

    注:

    • 猛击3

    如何替换此示例字符串 123456789 看起来像 123-45-789.

    #!/bin/sh
    # trivial example
    read number;
    # monotically substitute '-' into string after first three and dix digits 
    
    3 回复  |  直到 16 年前
        1
  •  8
  •   Dennis Williamson    16 年前

    不使用 sed :

    $ number=123456789
    $ number=${number:0:3}-${number:3:3}-${number:6:3}
    $ echo $number
    123-456-789
    
        2
  •  7
  •   Marcelo Cantos    16 年前
    phone=`echo $phone | sed 's/\(...\)\(...\)/\1-\2-/'`
    
        3
  •  0
  •   ghostdog74    16 年前

    一种方法,用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
    
    推荐文章