Aqui está uma solução Perl:
$ perl -pe 's/(\d+:.*?)(?=\d+:|$)/$1\n/g' file
random_string
83: some words
45: large error report
326: send emails to certain peple
random_string
34: some words
143: job success
Explicação
-
(\d+:.*?): corresponde a um ou mais números (\d+) seguidos por:e, em seguida, a menor string (o?in.*?torna-o não-voraz, parará assim que o primeiro fósforo é encontrado) correspondendo ao resto do regex. Aqui, continuará até a parte explicada abaixo. -
(?=\d+:|$): o(?=foo)é chamado de lookahead positivo . Ele corresponderá, mas o que corresponder não será incluído no resultado real. Portanto,bar(?=foo)corresponderá a todos os casos debarque forem seguidos porfoo. Aqui, estamos procurando por uma sequência de números seguida por um:(\d+:) ou o final da linha ($).
Agora, o operador de substituição substituirá todas as ocorrências do primeiro padrão por si próprio e uma nova linha que deverá fornecer a saída desejada.