awk: usando una variable de bash dentro del script awk
El siguiente código bash incorpora el código awk para fusionar file1 y file2 de una manera especial, detectando algunos bloques en el file2 e insertando allí todas las cadenas del file1.
#!/bin/bash
# v 0.09 beta
file1=/usr/data/temp/data1.pdb
file2=/usr/data/temp/data2.pdb
# fusionar ambos archivos
awk -v file="${file1}" '/^ENDMDL$/ {system("cat " file);} {print}' "${file2}" >> output.pdb
El problema es que no puedo usar la variable “file” en la parte awk, la cual está relacionada con file1 definido en bash.
{system("cat file");}
En cambio, si pego aquí la ruta completa del file1, funciona bien.
{system("cat /usr/data/temp/data1.pdb");}
¿Cómo puedo arreglar mi código awk para poder usar directamente una variable bash ahí?
davy.ai
Para corregir el código awk y poder usar la variable de bash “file1”, debes pasarla correctamente como una variable awk utilizando la bandera “-v”. Reemplaza la línea:
por:
Esto pasará correctamente el valor de la variable de bash “file1” al comando awk, permitiendo que se utilice en la función del sistema.