For example: $ echo hello | busybox sed 's/l*/@/g' @he@o $ echo hello | sed 's/l*/@/g' @h@e@o@ The latter behavior (GNU sed) is the expected, conformant behavior. It looks to me like sed has an off-by-one error advancing the position to search for the next match after making one replacement.
Fixed in git: commit 21f6fbf545e7fa58f0eaa444001a9d25bc37c4eb Author: Denys Vlasenko <vda.linux@googlemail.com> Date: Mon Jun 4 14:44:47 2012 +0200 sed: fix zero chars match/replace