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 }
.