Answers:
您在)s 之前缺少了一个反斜杠。您可能的意思是g(全局替换;每次出现)而不是p(如果替换成功,则打印,这将导致替换的行被打印两次)。和\{1,\}(或\+在某些实现中)而不是*(一个或多个而不是零或多个):
sed 's/[0-9]\{1,\}\.[0-9]\{1,\}\.[0-9]\{1,\}\.[0-9]\{1,\}/ANONYMOUS/g' < "$IPLOG"
或分解一下:
sed 's/\([0-9]\{1,\}\.\)\{3\}[0-9]\{1,\}/ANONYMOUS/g' < "$IPLOG"
一些sed实现-E(或-r类似ssed的GNU或更旧版本sed)具有扩展的正则表达式,可以使它更加清晰易懂:
sed -E 's/([0-9]+\.){3}[0-9]+/ANONYMOUS/g' < "$IPLOG"