AWK命令在Linux中不起作用,但在Mac中起作用

时间:2018-12-10 19:17:07

标签: linux bash shell awk syntax-error

有人可以告诉我我在做什么错吗?它似乎可以在我的Mac Shell上运行,但似乎无法在Linux上运行。看起来像awk的不同版本吗?我想确保我的代码可以在Linux版本上使用。

echo -e "${group_values_with_counts}" | awk '$1>='${value2}' { print "{\"count\":\""$1"\",\"type\":\""$2"\"}" }'


21:19:41 awk: $1>= { print "{\"count\":\""$1"\",\"type\":\""$2"\"}" }
21:19:41 awk:      ^ syntax error

1 个答案:

答案 0 :(得分:3)

您试图以错误的方式并使用不可移植的回声将shell变量的值传递给awk。正确的方法(假设value2不包含任何反斜杠)是:

printf '%s\n' "$group_values_with_counts" |
awk -v value2="$value2" '$1>=value2{ print "{\"count\":\""$1"\",\"type\":\""$2"\"}" }'

如果value2可以包含反斜杠,并且您希望对它们进行字面处理(例如,您不希望将\t转换为制表符),则需要使用ENVIRON或ARGV传递反斜杠。参见http://cfajohnson.com/shell/cus-faq-2.html#Q24