如何在hdfs命令中传递awk变量

时间:2018-02-26 06:09:12

标签: linux bash hadoop awk hdfs

我使用以下命令列出了比N天更好的文件/目录

DATE=`date +%Y-%m-%d`
dt=`date --date "$dt" +%Y%m%d`
loop_dt=`date -I --date "$dt -1 day"`   
*** output of loop_dt = 2018-02-25***

hdfs dfs -ls r /path/ | awk '$6 < "$loop_dt"'

我知道上面的hdfs命令是错误的,但是我想在awk命令中传递loop_dt varible,以便知道列出n天以前的文件

注意:如果我在awk命令中硬编码日期,我会得到结果

1 个答案:

答案 0 :(得分:0)

要回顾我在评论中所说的内容,您需要通过以下方式修复awk命令:

$ cat file
2015-08-01
2015-08-13

$ awk -v var="2015-08-12" '{if( $1 < var"") print}' file                                                                                       
2015-08-01

2015-08-12替换为您的shell变量"$loop_dt",它应该可以正常工作。

说明:

  • 使用此语法awk -v awkVarName="$shellVariable" 'BEGIN {print awkVarName}'将变量传递给awk
  • if( $1 < var"") ""强制进行字符串比较。