如何使用awk
命令中的变量来读取if
条件下的文件列?
e.g。说阅读以下示例文件的第2列,其中fcolumn1
的值为2
,startdate
的值为2014-09-22 00:00:00
,enddate
的值为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"
}
}
}'
答案 0 :(得分:1)
首先,if
块是多余的,因为awk
程序遵循以下(简化)结构:
CONDITION { ACTIONS } CONDITION {ACTIONS} ...
您可以在没有if
语句的情况下编写条件:
awk '$2>=startdate && $2<enddate { print $2 }' file
如果您想通过变量配置实际列号,请注意您可以使用awk
中的变量来处理列,如下所示:
awk -v col=2 '{print $col}'