Команда awk для объединения нескольких параметров - PullRequest
0 голосов
/ 20 января 2019

Я пытаюсь написать команду awk, и у меня возникли некоторые трудности. Моя задача - получить список файлов в каталоге hdfs, а затем скопировать каждый файл в целевой каталог. Пока у меня есть это:

hls $files_v | grep $rdir | awk '{print "hdfs dfs -cp "$NF}'
  • hls - это просто псевдоним "hdfs dfs -ls"
  • $ files_v - это мой каталог исходных текстов
  • $ rdir - это секция хадупа по строке даты, в данном случае 2019-01-09

Мне нужно объединить то, что у меня есть, с моим Целевым каталогом, поэтому я получаю несколько строк с надписью "hdfs dfs cp / some / source / file /some/target/directory/path.

У меня есть еще одна переменная, $ tgt_dir ", которая содержит конкретный каталог, в который я хочу скопировать TO, и не понимаю, как включить это в мои команды awk.

Причина, по которой у меня так много переменных, заключается в том, что я буду использовать несколько значений для исходного каталога, даты раздела и целевого каталога. Я решил, что было проще переопределить каждую переменную и повторно использовать их в моем сценарии. Я определил каждый из них как параметры времени выполнения, такие как $ 1, $ 2 и т. Д., И могу обновлять переменную во время выполнения таким образом.

Спасибо!

1 Ответ

0 голосов
/ 20 января 2019

попробуйте что-то вроде этого:

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/.
...