在我正在处理的数据集中,每行的第5($5
)列包含'%d/%m/%y'
格式的日期。我想将其与用户提供的一个进行比较。
我知道,为了轻松地将日期与关系二元运算符进行比较,它们需要位于%y-%m-%d
中,因此我需要将第5列的值进行内联转换,以使表达式的计算结果为true:< / p>
这是到目前为止我要提出的:
awk -F "$columnsep" -v dateA="$bornsince" '{if (FNR>1 && dateA<= system("bash echo "$5"| awk -F '/' '{print $3"-"$2"-"$1}'") ) {print}}' $file
如您所见,'{if (FNR>1 && dateA<= system("bash echo "$5"| awk -F '/' '{print $3"-"$2"-"$1}'") ) {print}}'
是我尝试评估的表达式,但是我无法让系统调用进行解析。我真的只是想调用awk -F '/' '{print $3"-"$2"-"$1}'"
,将$5
用管道传送到其中,以便正确地转换日期。
最小示例数据集:
1099511629352 Nunez Jorge female 17/11/1986
答案 0 :(得分:1)
这是一个怪异的解决方案
awk -F "$columnsep" -v dateA="$bornsince" '
(FNR > 1 && dateA <= cnv_date($5))
function cnv_date(date, a) {
split(date, a, "/")
return a[3] "-" a[2] "-" a[1]
}' $file