Une façon serait:
$ perl -lne 's/^/\n/ if $.>1 && /^\d+/; printf "%s",$_' file
20141101 server contain dump
20141101 server contain nothing {uekdmsam ikdas jwdjamc ksadkek} ssfjddkc * kdlsdlsddsfd jfkdfk
20141101 server contain dump
Cependant, cela supprime également la nouvelle ligne finale. Pour l'ajouter à nouveau, utilisez:
$ { perl -lne 's/^/\n/ if $.>1 && /^\d+/; printf "%s",$_' file; echo; } > new
Explication
Le -lsupprimera les sauts de ligne (et en ajoutera également un à chaque printappel, c'est pourquoi j'utilise à la printfplace. Ensuite, si la ligne actuelle commence par des nombres ( /^\d+/) et que le numéro de ligne actuel est supérieur à un ( $.>1, cela est nécessaire pour éviter d'ajouter un supplément ligne vide au début), ajoutez un \nau début de la ligne pour printfimprimer chaque ligne.
Alternativement, vous pouvez remplacer tous les \ncaractères par \0, puis changer à nouveau ceux \0qui se trouvent juste avant une chaîne de chiffres \n:
$ tr '\n' '\0' < file | perl -pe 's/\0\d+ |$/\n$&/g' | tr -d '\0'
20141101 server contain dump
20141101 server contain nothing {uekdmsam ikdas jwdjamc ksadkek} ssfjddkc * kdlsdlsddsfd jfkdfk
20141101 server contain dump
Pour qu'il ne corresponde qu'à des chaînes de 8 chiffres, utilisez-le à la place:
$ tr '\n' '\0' < file | perl -pe 's/\0\d{8} |$/\n$&/g' | tr -d '\0'