首页 > 解决方案 > 为什么 sed 不处理所有事件?

问题描述

或者:如何让 sed 替换所有事件?

$ echo ":::::::" |sed -e 's/::/:0:/g'
:0::0::0::

我希望/希望输出为:0:0:0:0:0:0:

标签: sed

解决方案


您可以在以下位置使用标签和跳转指令gnu-sed

echo ":::::::" | sed ':a; s/::/:0:/g; ta'

:0:0:0:0:0:0:

或使用 POSIX sed

echo ":::::::" | sed -e ':a' -e 's/::/:0:/g; ta'

或使用awk

awk 'BEGIN {FS=OFS=":"} {for (i=2; i<NF; ++i) $i="0"} 1' <<< ':::::::'

:0:0:0:0:0:0:

推荐阅读