passwd não lê senhas de forma não interativa, via STDIN gerado por pipe, como alternativa você pode usar chpasswd que lê a senha via STDIN mas tem um problema de segurança.
O problema é que chpasswd espera que as senhas sejam dadas em texto claro, seguindo o formato:
username:password
Para nos tornar um pouco menos explícitos, podemos salvar as senhas sequencialmente em linhas separadas em um arquivo correspondente à saída dada pelo comando awk -F: ' >= 1000 && != "nobody" {print }' /etc/passwd . Lembre-se de que você precisa manter a sequência da saída do comando enquanto salva as senhas no arquivo.
Em seguida, podemos usar paste para gerar o formato chpasswd em seu STDIN.
Por exemplo:
paste -d: <(awk -F: ' >= 1000 && != "nobody" {print }' /etc/passwd)\
/password/file | sudo chpasswd
Aqui /password/file contém as senhas relevantes.
Como medida de segurança, podemos remover o arquivo /password/file depois.