es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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í?

Tags:  ,

Answer

  1. Avatar for 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:

    {system("cat file");}
    

    por:

    {system("cat " file "");}
    

    Esto pasará correctamente el valor de la variable de bash “file1” al comando awk, permitiendo que se utilice en la función del sistema.

Comments are closed.