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

如何在bash脚本中替换字符串,bash,scripting,Bash,Scripting,注: Bash 3.00 如何替换此示例字符串123456789,使其看起来像123-456-789 单向呆呆 $ 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)

注:

Bash 3.00 如何替换此示例字符串123456789,使其看起来像123-456-789

单向呆呆

$ 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
单向呆呆

$ 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
在不使用sed的情况下:

在不使用sed的情况下:


$man sed是一个简单的文本过滤程序,它从stdin或文件中获取输入,并对其应用ed命令。它是流式ed的缩写。反引号执行包含的命令,并在命令行man bash上替换其输出,并搜索反引号以获取更多信息。$优先于反引号,在bash、zsh、ksh和dash sh中工作,但可能不在Bourne shell中,也不在C shell中。它由POSIX指定。$man-sed是一个简单的文本过滤程序,它从stdin或文件中获取输入,并对其应用ed命令。它是流式ed的缩写。反引号执行包含的命令,并在命令行man bash上替换其输出,并搜索反引号以获取更多信息。$优先于反引号,在bash、zsh、ksh和dash sh中工作,但可能不在Bourne shell中,也不在C shell中。它由POSIX指定。
$ 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
$ number=123456789
$ number=${number:0:3}-${number:3:3}-${number:6:3}
$ echo $number
123-456-789