Sua tentativa é muito próxima:
$ sed -n '/New client connection ([0-9]*) accepted from server port [0-9]* for/{s/,.* user \(.[^.]*\)\. .*/,,LOGIN,SUCCESS,Successful Login/;p}' file1
2017-09-17T21:01:15,sasadm@saspw,LOGIN,SUCCESS,Successful Login
2017-09-17T23:58:17,sastrust@saspw,LOGIN,SUCCESS,Successful Login
A única coisa que precisa ser diferente é não permitir que o padrão em \(\)
corresponda a mais do que usuário @ host. Portanto, não use .*
, pois o sed realiza uma correspondência gulosa = corresponde o máximo possível. Usando .[^.]*
irá mach todos os chars até o primeiro ponto encontrado.