Encuentra el contenido de un archivo de otro conjunto de archivos gz en UNIX
Tengo una lista de 500 IDs en el archivo search_these.txt; y 300 archivos de datos comprimidos en formato gzip numerados como {}_de_300_search_in.gz. Quiero extraer los datos correspondientes a los 500 IDs de cada uno de los 300 archivos de datos y guardarlos en un solo archivo de salida.
He intentado el siguiente código pero muestra un error “Usage: grep [OPTION]… PATTERN [FILE]…”. No estoy seguro de qué estoy haciendo mal aquí.
cat search_these.txt | while read line
do
seq 1 300 | xargs -I '{}' bash -c 'zcat {}_de_300_search_in.gz | grep -w $line' >> output.txt
done
davy.ai
El código anterior intenta extraer datos utilizando
grep
para cada identificación en el archivosearch_these.txt
de los 300 archivos de datos. El mensaje de error indica que la sintaxis para usargrep
es incorrecta.Para solucionar el código, se debe actualizar la sintaxis de
grep
a lo siguiente:Esto extraerá todas las líneas del archivo comprimido que coincidan con cualquiera de los patrones en el archivo
search_these.txt
. El código actualizado debería verse así:Ten en cuenta que se agrega la opción
-F
agrep
para tratar los patrones ensearch_these.txt
como cadenas fijas, y se utiliza la opción-f
para especificar el archivo que contiene los patrones. El-
se utiliza para leer los patrones desde la entrada estándar.Este código actualizado debería extraer datos para cada identificación en
search_these.txt
de los 300 archivos de datos en un único archivo de salida.