Regex awk将数字转换为日期格式以选择大于特定mmyy的行

Regex awk将数字转换为日期格式以选择大于特定mmyy的行,regex,unix,awk,sed,grep,Regex,Unix,Awk,Sed,Grep,输入: test,1120,1 test,1219,2 预期产出 test,1120,1 目标:例如,尝试打印$2格式为mmyy大于1020的行 我尝试了以下方法: awk-F,“{if($2>1020){print$0}}”文件不会给出预期的输出,因为它仍然是数字等。。1219大于1020假设第二个字段始终包含4位数字,那么: awk -F, 'substr($2, 3, 2) substr($2, 1, 2) > 2010' input 请注意,我将biger一词解释为later

输入

test,1120,1
test,1219,2
预期产出

test,1120,1
目标:例如,尝试打印
$2
格式为
mmyy
大于
1020
的行

我尝试了以下方法:


awk-F,“{if($2>1020){print$0}}”文件
不会给出预期的输出,因为它仍然是数字等。。1219大于1020

假设第二个字段始终包含4位数字,那么:

awk -F, 'substr($2, 3, 2) substr($2, 1, 2) > 2010' input

请注意,我将
biger
一词解释为
later
,意思是
0921
1020
大。如果我的假设不正确,请告诉我。

假设第二个字段始终包含4位数字,那么:

awk -F, 'substr($2, 3, 2) substr($2, 1, 2) > 2010' input
请注意,我将
biger
一词解释为
later
,意思是
0921
1020
大。如果我的假设不正确,请让我知道。

编辑:,因为OP提到现在如果日期要求小于提供的输入,那么可以尝试以下操作

awk -v val="1020" '
BEGIN{
  FS=OFS=","
  user_year=substr(val,3)
  user_month=substr(val,1,2)
}
{
  year=substr($2,3)
  month=substr($2,1,2)
  if(year==user_year){
   if(month<user_month){
     print
   }
  }
  else if(year<user_year){
     print
  }
}
' Input_file
编辑:因为OP提到现在如果日期要求少于提供的输入,那么可以尝试以下操作

awk -v val="1020" '
BEGIN{
  FS=OFS=","
  user_year=substr(val,3)
  user_month=substr(val,1,2)
}
{
  year=substr($2,3)
  month=substr($2,1,2)
  if(year==user_year){
   if(month<user_month){
     print
   }
  }
  else if(year<user_year){
     print
  }
}
' Input_file

因此,我们鼓励用户添加他们为解决自身问题所付出的努力,请在您的问题中添加同样的努力,然后让我们知道。@RavinderSingh13完成。因此,我们鼓励用户添加他们为解决自身问题所付出的努力,请在您的问题中添加同样的内容,然后让我们知道。@RavinderSingh13完成。