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"