awk '/^[+-]?[0-9]+\.?[0-9]*([Ee][+-]?[0-9]+)?$/ { next }
/^[+-]?\.[0-9]+([Ee][+-]?[0-9]+)?$/ { next }
{ print }' yourfile
Мантисса часть числа, может начинаться с точки или заканчиваться точкой, но не может быть просто . не действителен, и добавление показателя степени, как .E3 не делает это действительным. 0. и .0 действительны, с показателем степени или без него. Показатель степени может быть верхним или нижним регистром e и может иметь явный знак + .
Обратите внимание, что это предполагает отсутствие пробелов вокруг значений с плавающей точкой. Это также соответствует целочисленным значениям. Кроме того, он проходит через элементы, которые отличаются от нотации с плавающей точкой ненужными символами или чем-либо еще, например 1E+ , 1.0A или .0E+33x . Обратите внимание, что некоторые из этих примеров имеют нотацию с плавающей точкой в качестве действительного префикса .
Два регулярных выражения могут быть объединены, чтобы избежать повторения части общего экспоненты и действия общего правила. Результат даже менее читабелен.
Наконец, { print } может быть "обработан кодом" до 1 . Выражение 1 имеет логическое значение true, а действие awk по умолчанию для условия true или соответствующего шаблона - { print } .