awk - 条件

时间:2017-10-25 16:08:22

标签: awk

如何使用awk命令中的变量来读取if条件下的文件列?

e.g。说阅读以下示例文件的第2列,其中fcolumn1的值为2startdate的值为2014-09-22 00:00:00enddate的值为2014-09-23 00:00:00 }。

abcd,2016-04-23 02:35:34,sdfsdfsd
sdsd,2016-04-22 02:35:34,sdfsdfsd

以下命令有效:

awk -v startdate="$startdate" -v enddate="$enddate" -F"," '
{ 
    if ($2>=startdate && $2<enddate)
    { 
        print $2
    }   

}'

期望是使$2动态如下:

awk -v startdate="$startdate" -v enddate="$enddate" -v "fcolumn1=${fcolumn1}" -F"," '
{ 
    if (fcolumn1 != "")
    {

        if (**$fcolumn1**>=startdate && **$fcloumn1**<enddate)
        { 
            print "$fcolum1"
        }   
    }
}'

1 个答案:

答案 0 :(得分:1)

首先,if块是多余的,因为awk程序遵循以下(简化)结构:

 CONDITION { ACTIONS } CONDITION {ACTIONS} ...

您可以在没有if语句的情况下编写条件:

awk '$2>=startdate && $2<enddate { print $2 }' file

如果您想通过变量配置实际列号,请注意您可以使用awk中的变量来处理列,如下所示:

awk -v col=2 '{print $col}'