awk ~NF<2{printf\~\n\~}{print}~
Acho que esses tils devem ser aspas duplas se você executar o comando no shell:
awk "NF<2{printf\"\n\"}{print}"
O erro que você recebe é porque o shell vê o <
como um operador de redirecionamento e toma a seguinte parte como um nome de arquivo.
Ou melhor ainda, coloque o script awk entre aspas simples para que você não precise escapar das citações:
awk 'NF<2{printf"\n"}{print}'
Isso imprimiria uma nova linha extra antes de qualquer linha com menos de dois campos. Mas isso não é o mesmo que uma linha vazia, linhas com apenas uma palavra ainda teriam a linha extra vazia adicionada.
Talvez verifique se há exatamente zero campos:
awk 'NF == 0 {printf "\n"} {print}'
ou se a linha estiver totalmente vazia:
awk '$0 == "" {printf "\n"} {print}'
Mas, como a ação padrão é print $0
e uma string vazia é falsa, e printf "\n"
é praticamente o mesmo que print
com uma linha vazia, isso pode ser condensado em apenas:
awk '!$0; 1'