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.

Leyendo y analizando un archivo de texto con un script de bash

Quiero leer un archivo de registro y quiero extraer un número de 5-6 dígitos que está escrito justo después de la palabra clave “salary”. Luego quiero analizar si el salario supera los 2000. Si hay al menos uno por encima de 2000, es una empresa multinacional, de lo contrario es desconocida. Después de escribir el salario, la línea generalmente termina, pero a veces hay una opción de correo electrónico.

Mi script actual se ve así.

salary=$(grep -o 'salary [1-9][0-9]+$' tso.txt | grep -o '[0-9]+')

echo $salary

if [ $salary > 2000 ]; then echo "es una empresa multinacional....."; else "es desconocida....."; fi
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para extraer un número de 5-6 dígitos que se encuentra justo después de la palabra clave “salary” en un archivo de registro y determinar si el salario es superior a 2000 utilizando bash, siga el script a continuación:

    salary=$(grep -o 'salary [1-9][0-9]\+' logfile.txt | grep -o '[0-9]\+')
    
    echo $salary
    
    if [ $salary -gt 2000 ]; then
      echo "es una empresa multinacional"
    else
      echo "se desconoce"
    fi
    

    Explicación:

    • El comando grep -o 'salary [1-9][0-9]\+' logfile.txt busca la palabra clave “salary” seguida de un espacio y 5-6 dígitos en un archivo de registro.
    • El comando grep -o '[0-9]\+' selecciona solo los dígitos del resultado anterior.
    • La salida de este comando se asigna a la variable salary utilizando salary=$(...).
    • El salario extraído se imprime utilizando echo $salary.
    • La declaración if verifica si el salario es mayor a 2000 utilizando el operador -gt.
    • Si el salario es mayor a 2000, imprime “es una empresa multinacional”, de lo contrario imprime “se desconoce”.

Comments are closed.