Como seus dados são delimitados e fáceis de ler, há algumas maneiras de fazer isso. Sed pode analisar seus dados em uma linha e gerar as alterações:
sed -r -i 's/^(.*):(.*):(.*):(.*):(.*)$/{"randomId":{"s":""},"id":{"s":""},"userId":{"s":""},"dns":{"s":""},"status":{"s":""}}/' input.txt
Você usa grupos de captura para capturar tudo entre o início do arquivo, seu delimitador e o final do arquivo e depois manipular o texto em torno desses grupos. Cada grupo de captura é referenciado por "\ #", em que # é o número do grupo de captura iniciado em um e incrementado em um para cada grupo.
Como já mencionado, você também pode definir seu próprio delimitador. Bash tem uma variável interna chamada IFS (separador de campo interno). O IFS padroniza o espaço em branco, mas você pode alterá-lo. Eu não vou mostrar o exemplo como já foi dado e seria apenas uma cópia dele.