2013-04-05 30 views
1

它最终将成为较大脚本的一部分,因此需要使用shell脚本。其他语言的简单任务,但我在shell中完成它时遇到了麻烦。基本上我有一个字符串,我想插入一个“。”在字符串内的所有可能的索引处。输出可以换行或用空格分隔。谁能帮忙?shell - 在字符串的不同索引处插入一个字符

实施例:
输入: “ABCD”

输出: “.abcd
a.bcd
ab.cd
abc.d
ABCD”。

OR

输出: “.abcd a.bcd ab.cd abc.d ABCD”。

回答

2

一个简单的for循环会做:

input=abcd 
for ((i=0; i<${#input}+1; i++)) 
do 
    echo ${input::$i}.${input:$i} 
done 

这只是切片了各指标在串并插入.。您可以将echo更改为其他内容,例如添加到数组中,如果您想要将它们存储起来,请输出它们,当然。

+0

+1,只是一个(对于OP可能不相关)旁注:为了在'ksh'下工作,还需要明确指定起始索引,例如, '$ {输入:0:$ I}'。 ksh93的解析器吠叫'$ {foo :: $ bar}'。 – 2013-04-05 18:19:14

+0

这对于行似乎不工作在SH。所以我尝试了以下方法,但回波线给出了一个“错误的替代”错误。 'max = $(($ {#input} +1)); 我在'seq 0 $ max'; 做; echo $ {input :: $ i}。$ {input:$ i}; done;' * - 代码中的'实际上是反嘀' – 2013-04-05 22:47:50

+0

经过在系统中的进一步探索,我正在研究它实际上是破折号。 – 2013-04-06 00:50:17