评估awk中的另一个awk表达式

时间:2018-11-10 16:18:05

标签: bash awk

在我正在处理的数据集中,每行的第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用管道传送到其中,以便正确地转换日期。

  • 需要在macos和linux(ubuntu)上工作

最小示例数据集:

1099511629352 Nunez Jorge female 17/11/1986

1 个答案:

答案 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