Em vez de substituir todas as linhas em newpw.txt
,
seria melhor criar um novo arquivo, iterando os nomes dos usuários no antigo, por exemplo:
cut -d: -f1 pw.txt | while read -r user; do
echo "$user:$(openssl passwd ABCXYZ)"
done > newpw.txt
mv newpw.txt pw.txt