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.

Cómo leer una cadena específica de un archivo y guardar toda la línea en otro archivo en un script de Shell de Bash.

Tengo un archivo que contiene muchas líneas. Cada línea contiene cadenas y números. Mi script debe leer el archivo y cuando se encuentre una palabra específica, debe guardar la línea completa. Por ejemplo, una de las líneas contiene: “Computera abc23”, cuando el script encuentre la palabra “Computera” en cualquier línea, debe guardar toda la línea, es decir, “Computera abc23”. La línea debe guardarse en “file1”.
De manera similar, otra línea en el archivo contiene la palabra “machine1”, cuando el script vea la palabra “machine1”, debe guardar esa línea en “file1”.

Aquí está mi código:

#!/bin/sh
f="home/c/file.txt"
n=$(cat "$f" | grep "specific word")
echo "${n} >| /home/c/file1.txt"

Mi código lee y guarda todo el texto del archivo en “file1”, pero me gustaría guardar solo aquellas líneas donde se encuentre una palabra específica.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para lograr el resultado deseado de guardar únicamente las líneas que contienen una palabra específica, puedes modificar tu código para usar el comando grep con una expresión regular para buscar la palabra en el archivo. El código modificado se vería así:

    #!/bin/sh
    f="home/c/file.txt"
    grep "Computera\|machine1" "$f" > /home/c/file1.txt
    

    En este código, grep se utiliza para buscar las palabras “Computera” o “machine1” en el archivo especificado en la variable f. El símbolo > se utiliza para redirigir la salida al archivo /home/c/file1.txt.

    La expresión regular \| se utiliza para hacer coincidir tanto “Computera” como “machine1”. Puedes modificar esta expresión para hacer coincidir otras palabras específicas según sea necesario.

    Ten en cuenta que este código sobrescribirá el contenido de file1.txt cada vez que se ejecute. Si quieres agregar las líneas coincidentes al final del archivo en lugar de sobrescribirlo, utiliza el símbolo >> en lugar de >.

Comments are closed.