我如何比较Bash中涉及awk变量的数字

问题描述 投票:0回答:1

假设我有一个字段以yyyymmdd格式指示日期,并且我想过滤大于该字段给定值的行。

如果我在if语句中使用以下awk条件,则效果很好

if ($1> "20200315")

但是假设我将2020定义为yyyy,将03定义为mm,然后将这些变量作为awk -v ym=${yyyy}${mm}传入

if语句中的awk条件应如何显示?我尝试了以下操作,但未过滤任何行。

if ($1> "ym15")
bash awk
1个回答
0
投票

所以问题出在"ym15",因为当用引号引起来时,awk不会将ym视为变量。解决方案是要么取消引用变量,然后仅引用相邻的文本“ 15”

if ($1 > ym "15")

OR

将变量放在文本之间,并用空格分隔。 More on this behavior

if ($1 > ym 15)
© www.soinside.com 2019 - 2024. All rights reserved.