awk ~NF<2{printf\~\n\~}{print}~
Я думаю, что эти тильды должны быть в двойных -кавычках, если вы запускаете команду в оболочке:
awk "NF<2{printf\"\n\"}{print}"
Ошибка, которую вы получаете, связана с тем, что оболочка видит <
как оператор перенаправления и принимает следующую часть как имя файла.
Или, что еще лучше, поместите скрипт awk в одинарные -кавычки, чтобы вам не нужно было экранировать кавычки внутри него:
awk 'NF<2{printf"\n"}{print}'
Это напечатает дополнительную новую строку непосредственно перед любой строкой с менее чем двумя полями. Но это не то же самое, что пустая строка, в строках с одним словом все равно будет добавлена дополнительная пустая строка.
Может быть, проверить, есть ли ровно нулевые поля:
awk 'NF == 0 {printf "\n"} {print}'
или если строка полностью пуста:
awk '$0 == "" {printf "\n"} {print}'
Но так как действие по умолчанию — print $0
, а пустая строка является ложной, а printf "\n"
в значительной степени совпадает с print
с пустой строкой, это можно было бы сократить до:
awk '!$0; 1'