Если вы используете двойные или одинарные кавычки, если вы используете оболочку, похожую на Bourne, gawk увидит программу точно так же, как и он появляется между кавычками. Даже в двойных кавычках, как Bourne, так и csh-подобные оболочки только потребляют \ перед символами, которые могут нуждаться в ускорении (например, $, а в случае csh,!- таким образом, в csh эта программа будет казаться синтаксически правильной для gawk, хотя она все равно не будет делать то, что вы хотите).
! не имеет смысла гавать в этом контексте, поэтому он дает ошибку. Для «выходных линий с числом полей, отличных от 6 и заканчивая обратной косой черты», используйте:
gawk 'NF != 6 && /\\$/' file
То есть: матч линии, которые не имеют 6 полей, и которые соответствуют \ непосредственно предшествующий конец строки ($). \ Должен быть экранирован с помощью другой обратной косой черты, потому что gawk тоже использует \ для экранирования - хотя в случае gawk все \ (кроме тех, которые экранированы другим \) впитываются; те, которые не избегают особого характера, просто исчезают.
Без соответствующего действия действие по умолчанию (распечатать строку) будет выполняться, когда выполняется это условное утверждение.