Seu grep
imprime todas as linhas que contêm caracteres que não são de pontuação. Não é o mesmo que imprimir todas as linhas que não contenham caracteres de pontuação.
Para o último, você deseja a opção -v
(linhas de impressão que não correspondem ao padrão):
grep -v '[[:punct:]]' file.txt
Se, por algum motivo, você não quiser usar a opção -v
, verifique se a linha inteira é composta por caracteres que não são de pontuação:
grep '^[^[:punct:]]\+$' file.txt