代码之家  ›  专栏  ›  技术社区  ›  Gert Gottschalk

字段为文本时,AWK无法进行数值比较

awk
  •  0
  • Gert Gottschalk  · 技术社区  · 6 年前

    当字段为文本时,AWK似乎无法进行数字比较。

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

    希望只看到“a 100 c”。有什么诀窍?

    1 回复  |  直到 6 年前
        1
  •  3
  •   Ian McGowan    6 年前

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

    比较表达式的值为1(如果为true)和0(如果为false)。在比较混合类型的操作数时,数值操作数将使用CONVFMT的值转换为字符串(请参阅“字符串和数字的转换”一节)

    % 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