我正在尝试编写awk命令,但遇到了一些困难。我的任务是获取hdfs目录中的文件列表,然后将每个文件复制到目标目录。到目前为止,我有这个:
hls $files_v | grep $rdir | awk '{print "hdfs dfs -cp "$NF}'
我需要将到目前为止的内容与我的目标目录结合起来,所以最后需要多行内容,显示为“ hdfs dfs cp / some / source / file / some / target / directory / path。
我还有另一个变量,$ tgt_dir“,它包含要复制到的特定目录,并且不了解如何在我的awk命令中包括它。
我有这么多变量的原因是因为我将对Source目录,分区日期和Target目录使用多个值。我认为重新定义每个变量并在脚本中重新使用它们更容易。我将每个参数定义为运行时参数,例如$ 1,$ 2等,并且可以通过这种方式在运行时更新变量。
谢谢!
答案 0 :(得分:0)
尝试这样的事情:
files_v=/the/source/path
rdir=2019-01-09
tgt_dir=/the/target/path
hls $files_v | grep $rdir | awk -v tgt_dir=$tgt_dir '{print "hdfs dfs -cp",$NF,tgt_dir}'
顺便说一句,为什么不只使用以下内容?
hdfs dfs -cp /the/source/path/2019/01-09/* /the/target/path/.