Bash 每2个字节添加一个符号

Bash 每2个字节添加一个符号,bash,sed,Bash,Sed,我有一个字符串20000024ff3dbf50,我想将其转换为:20:00:00:24:ff:3d:bf:50,我已尝试使用sed: echo 20000024ff3dbf50 | sed的/\(..\)\(..\)\(..\)\(..\)\(..\)\(..\)\(..\)\(..\)/\1:\2:\3:\4:\5:\6:\7:\8/' 但它有点难看。两种替换: echo "20000024ff3dbf50" | sed 's/../&:/g;s/.$//' 结果: 20:00:00

我有一个字符串
20000024ff3dbf50
,我想将其转换为:
20:00:00:24:ff:3d:bf:50
,我已尝试使用
sed

echo 20000024ff3dbf50 | sed的/\(..\)\(..\)\(..\)\(..\)\(..\)\(..\)\(..\)\(..\)/\1:\2:\3:\4:\5:\6:\7:\8/'

但它有点难看。

两种替换:

echo "20000024ff3dbf50" | sed 's/../&:/g;s/.$//'
结果:

20:00:00:24:ff:3d:bf:50
带-o的Grep将输入拆分为每行2个字符;
粘贴使用分隔符“:”连续填充它们[-s]

您也可以使用GNU awk自动拆分:

echo 20000024ff3dbf50 | awk '$1=$1' FPAT=.. OFS=:
输出:

20:00:00:24:ff:3d:bf:50

当然还有更好的办法。
20:00:00:24:ff:3d:bf:50