Isso cuida de tudo menos de um +
:
sed 's/ [^+ ]*+*\([0-9.]*\)[,+]*/ /2' <<\IN
2015-04-10 11:35:31 20000004f$OriginalIP+127.0.0.1,+136.243.19.46+ HV-WEB-01 [etc]
2015-04-10 11:35:31 20000004f$OriginalIP+127.0.0.1,+136.243.19.46+ HV-WEB-01 [etc]
2015-04-10 21:05:38 20000004f%OriginalIP+10.10.1.7,+89.221.243.229+ HV-WEB-01 [etc]
2015-04-10 21:05:38 20000004f%OriginalIP+10.10.1.7,+89.221.243.229+ HV-WEB-01 [etc]
IN
Imprime ...
2015-04-10 11:35:31 127.0.0.1 136.243.19.46+ HV-WEB-01 [etc]
2015-04-10 11:35:31 127.0.0.1 136.243.19.46+ HV-WEB-01 [etc]
2015-04-10 21:05:38 10.10.1.7 89.221.243.229+ HV-WEB-01 [etc]
2015-04-10 21:05:38 10.10.1.7 89.221.243.229+ HV-WEB-01 [etc]
É porque os campos são agrupados nos caracteres que eu quero usar como delimitadores. É um pouco frustrante, para ser honesto. Mas facilmente corrigido:
sed 's/ [^+ ]*+*\([0-9.]*\)[,+]*/ /2;s/+ / /' <infile