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.

Condición de awk para la sustitución de la primera línea

Tengo un shell que reemplaza la primera línea de este archivo:

TABLE;APGFBEBA; ;
NoSS;CHAR(13);N° assuré;
DtDebExo;CHAR(8);Date début;

con esta línea:

01 APGFBEBA.

Pero también tengo archivos que originalmente se ven así:

Table;APGFNOJF; ; ;

Entonces intenté agregar una condición “O” a mi comando awk para poder reemplazar esas líneas de la misma manera que hice con la de arriba, pero desafortunadamente no funciona.

Aquí está mi comando awk:

awk -F ';' '
$1=="TABLE" && $3==" " || $1=="TABLE" && $4==" " {
  printf "01 %s.\n\n", $2;
  next
}

La primera condición funciona, pero no la segunda.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Según la información proporcionada, parece que podría haber un problema con la sintaxis del comando awk al usar múltiples condiciones con el operador lógico “OR” (||).

    Para solucionar este problema, podemos poner paréntesis alrededor de cada condición para separarlas de manera más clara, de esta forma:

    awk -F ';' '
    ($1=="TABLE" && $3==" ") || ($1=="TABLE" && $4==" ") {
      printf "01 %s.\n\n", $2;
      next
    }'
    

    Esto debería permitir que el comando awk reconozca correctamente ambas condiciones y reemplace las líneas según sea necesario.

Comments are closed.