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完成。