awk 大于小于

标签 awk

我正在使用这个命令

num1=2.2
num2=4.5

result=$(awk 'BEGIN{print ($num2>$num1)?1:0}')

这始终返回 0。无论是 num2>numl 还是 num1>num2 但是当我这样输入实际数字时

result=$(awk 'BEGIN{print (4.5>2.2)?1:0}')

我得到的返回值为 1。这是正确的。

我该怎么做才能让这项工作成功?

最佳答案

使用变量时失败的原因是单引号括起来的 awk 脚本由 awk 计算,而不是 bash:所以如果您想将正在使用的变量从 bash 传递到 awk,则必须使用 -v 选项将其指定为如下:

num1=2.2
num2=4.5

result=$(awk -v n1=$num1 -v n2=$num2 'BEGIN{print (n2>n1)?1:0}')

注意awk 脚本中使用的程序变量不得以 $ 为前缀

关于awk 大于小于,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13480155/

相关文章:

json - 使用 bash 脚本合并 JSON 文件

sql - 将 SQL 插入脚本转换为 CSV 格式

regex - 在 linux 中的正则表达式后将文本附加到文件

perl - 每三次出现的字符串加倍

awk - 如何使用awk连接3个文件?

perl - 试图从动态 NF 文件中获取最后 4 个不同的值

regex - 尝试按 awk 中的特定列值打印行

awk - 在 IPv4 地址匹配后使用 SED 删除冒号到行尾

awk - 在 awk 中获取用户输入

regex - 合并行落在之间但不包括 sed 的重复模式