Seu comando funciona para mim:
$ sed -r '/user-type/{N;s/user-type: (.*)\n.*gth: .*([0-9]+).*$/ /}' file.txt
admin 8
auth 8
Se, no entanto, se converter a entrada para o formato DOS, recebo a saída que você vê:
$ sed -r '/user-type/{N;s/user-type: (.*)\n.*gth: .*([0-9]+).*$/ /}' <(sed 's/$/\r/' <file.txt)
8min
8th
Uma solução é converter seu arquivo de entrada em terminações de linha no estilo unix.
Outra solução é ajustar o comando sed para ser tolerante a \r
caracteres:
$ sed -r '/user-type/{N;s/user-type: (.*)\n.*gth: .*([0-9]+).*$/ /; s/\r//}' <(sed 's/$/\r/' <file.txt)
admin 8
auth 8
Ou:
$ sed -r '/user-type/{N;s/user-type: ([^\r]*).?\n.*gth: .*([0-9]+).*$/ /}' <(sed 's/$/\r/' <file.txt)
admin 8
auth 8