Use o caminho completo para gerar nomes de arquivo usando Awk

Tive que coletar o mesmo arquivo de configuração de vários projetos e colocá-los em um único lugar para que pudesse enviar as configurações com algumas modificações em cada um na implantação. Decidi usar o nome do diretório para gerar o nome do arquivo de configuração para que eu pudesse identificá-los facilmente.

Dados os seguintes caminhos para arquivos conf:

/home/user/projects/preprod/app1_build/config/app.conf
/home/user/projects/preprod/app2_build/config/app.conf
/home/user/projects/preprod/app3_build/config/app.conf
/home/user/projects/preprod/blog_build/config/app.conf
/home/user/projects/production/app1_build/config/app.conf
/home/user/projects/production/app2_build/config/app.conf
/home/user/projects/production/app3_build/config/app.conf
/home/user/projects/production/blog_build/config/app.conf

Usei um bash for loop na linha de comando para pegar cada caminho completo e passá-lo para o awk. No lado do awk, dividi-o /e executei um comando do sistema que copiava cada arquivo para /home/user/renamed_project_configsusar o número da coluna para obter os nomes dos diretórios usados ​​para construir o nome do arquivo.

for i in `find /home/user/projects -name app.conf`; do echo $i|awk '{split($0,a,"/"); command = "cp "$0" /home/user/renamed_project_configs/" a[4]"."a["5"]"."a[7]; system(command)}'; done

O resultado foi que a linha /home/user/projects/preprod/app2_build/config/app.confcriaria o arquivo /home/user/renamed_project_configs/preprod.app2_build.app.confpuxando da coluna 4 (preprod), coluna 5 (app2_build) e coluna 7 (app.conf).

Referências:
Atribuição de comandos do sistema no Awk ,
Split String para Array Usando Awk