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.

Crear una lista de patrones dinámicamente desde un archivo para ejecutar en grep -f.

Digamos que tengo esta entrada:

11
12
31
40
42
90

Necesito obtener todas las líneas numéricas del archivo y agregar el carácter | después de cada número, que se pueda usar como una lista de patrones para ejecutar con grep -f.

Estaba pensando en usar xargs, pero no tengo idea de cómo usar | como separador o poner los argumentos en medio de una cadena.

grep -P "(11|12|31|40|42|90)\|" o.txt
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para agregar el carácter | después de cada línea numérica en el archivo, se puede utilizar el comando sed. Aquí está un ejemplo de comando que logrará esto:

    sed 's/$/|/' input.txt
    

    Este comando agregará el carácter | al final de cada línea en el archivo input.txt.

    Para utilizar esta salida como lista de patrones con grep -f, se puede enviar la salida de sed a grep -f -. Aquí hay un ejemplo de comando:

    sed 's/$/|/' input.txt | grep -f - o.txt
    

    Este comando primero agrega un carácter | a cada línea en input.txt, luego pasa la lista resultante de patrones a grep -f. El argumento - indica a grep -f que lea la lista de patrones desde la entrada estándar (es decir, la salida de sed). El último argumento, o.txt, especifica el archivo en el que buscar utilizando los patrones proporcionados.

Comments are closed.