AWK терпит неудачу сравнения чисел c, когда поле является текстом - PullRequest
0 голосов
/ 06 марта 2020

AWK, похоже, не может сравниться с цифрой c, когда поле является текстовым.

% cat tt
1 2 3
a 100 c
x y z


% awk '{if($2>10){print}}' tt
a 100 c
x y z

Ожидается увидеть только «100 c». В чем подвох?

1 Ответ

3 голосов
/ 06 марта 2020

https://www.gnu.org/software/gawk/manual/html_node/Comparison-Operators.html

"Выражения сравнения имеют значение один, если истина, и ноль, если ложь. При сравнении операндов смешанных типов числовые операнды c преобразуются в строки с использованием значение CONVFMT (см. раздел Преобразование строк и чисел). "

Форсировать число c сравнение:

% awk '{if($2+0>10){print}}' tt
a 100 c

https://www.gnu.org/software/gawk/manual/html_node/Strings-And-Numbers.html#Strings -And-Numbers

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...