Substituindo cada linha inteira por $newLineCont se o primeiro campo delimitado por espaço em branco for igual a $cont :
awk -v c="$cont" -v nc="$newLineCont" '$1 == c { $0 = nc } 1' <infile >outfile
Isso lerá a partir de infile e criará um novo arquivo chamado outfile . Se o primeiro campo de uma linha for igual a $cont , toda a linha será substituída por $newLinecont .
O trailing 1 é uma maneira curta de escrever { print } e fará com que todas as linhas sejam exibidas.
Analisando Stéphane Chazelas abaixo em conta (nos casos em que uma ou ambas as variáveis contiverem barras invertidas):
env c="$cont" nc="$newLineCont" awk '$1 == ENVIRON["c"] { $0 = ENVIRON["nc"] } 1' <infile >outfile
Usando sed :
sed "s/^$cont[^0-9].*/$newLineCont/" <infile >outfile
Com sed , precisamos ter mais cuidado para corresponder à coisa correta sem a expressão regular. Se $cont for 12 , não queremos corresponder as linhas que começam com 123 . É por isso que coincidi explicitamente com um não-dígito depois de $cont com [^0-9] (suponho que $cont seja um número).
Assim como o comando awk , ele lê infile e grava em outfile .
Se $cont ou $newLineCont contiver barras, elas precisarão ter escape como \/ , e se $cont contiver qualquer outro caractere especial em expressões regulares, elas também precisarão ser escapadas corretamente.