在shell中的字母数字字符串中每两个字母后添加一个冒号

时间:2017-11-16 22:16:27

标签: bash shell ksh

所以我有一个字母数字字符串10006cc2190ab011我试图在这个字母数字字符串中的每两个字母后添加一个冒号。

this is the string : 10006cc2190ab011 
i want it be - 10:00:6c:c2:19:0a:b0:11

提前致谢。

2 个答案:

答案 0 :(得分:2)

sed解决方案:

$ echo 10006cc2190ab011 | sed 's/../&:/g; s/:$//'
10:00:6c:c2:19:0a:b0:11

用同一对加:替换每对非重叠字符。最后删除尾随:(如果输入文本的长度均匀)。

答案 1 :(得分:1)

str=10006cc2190ab011; str="${str//??/${.sh.match}:}"; echo ${str%:}

在不使用外部命令的情况下进行相同的替换,只使用ksh-internals。

sed中的相同(另一个答案)。将每个//两个字符??替换为$ str,其中/匹配的字符串和:(每个匹配都保存在ksh变量${.sh.match}中)。然后在没有最后%'的情况下打印$ str:'。