Tengo una lista con 250 líneas. Tengo que ejecutarlos todos a través de un servidor web para obtener una lista de resultados. Sin embargo, esta lista devuelve muchas más líneas de las que me interesan. Digamos que mi list.txt
es:
a.1
b.1
etc
entonces la salida es output.txt
:
a.1 a b c
a.2 b a b
a.3 d k o
b.1 b o p
b.2 o i y
b.3 p i y
etc
¿Es posible utilizar el comando grep para buscar todas las palabras en list.txt en output.txt y luego generar la lista "deseada" wanted.txt? Necesito toda la línea en mi output.txt Soy nuevo en secuencias de comandos, pero lo que me gustaría es algo como
grep list.txt output.txt > wanted.txt
No he podido encontrar ningún ejemplo de esto
Respuestas:
Ignoraría
grep
por este. Es bueno para las expresiones regulares, pero no parece que realmente necesites eso aquí.comm
puede comparar dos archivos y mostrarle intersecciones. Usando tus ejemplos exactos:Esto es más rápido que cualquier grep, pero depende (en gran medida) de los archivos que se ordenan. Si no lo están, puede ordenarlos previamente, pero eso alterará la salida, por lo que también se ordenará.
Alternativamente, esta respuesta de iiSeymour te permitirá hacerlo
grep
. Las banderas solicitan un archivo de entrada y fuerzan una búsqueda de cadena completa y palabra completa. Esto no dependerá del pedido, sino que se basará en eloutput.txt
pedido. Invierta los archivos si los quiere en el orden de la lista.txt.Si tu
list.txt
es realmente grande, es posible que debas abordar esto un poco más iterativamente y pasar cada línea a grep por separado. Esto aumentará masivamente el tiempo de procesamiento. En lo anterior estarías leyendooutput.txt
una vez, pero de esta manera lo leerías y procesarías para cada línea list.txt. Es horrible ... Pero podría ser tu única opción. Por el lado positivo, ordena las cosas porlist.txt
orden.fuente
-1
suprime líneas exclusivas del primer archivo,-2
suprime líneas exclusivas del segundo archivo y-3
suprime líneas comunes a ambos. Para obtener solo las líneas comunes, suprimimos los únicos, por lo tanto-12
.