cómo ignorar la acción de imprimir el valor de un campo utilizando awk
Hola, tengo varios archivos cuya línea inicial (o registro) sigue este formato:
cat file_1.txt | grep '>'
> CP022114.1 Kluyvera georgiana strain YDC799 chromosome, complete genome
Quiero extraer el segundo campo de ese registro, que corresponde a la categoría taxonómica de género. En este ejemplo es “Kluyvera”. Para ello, utilizo esto:
awk 'NR==1{print $2}' file.txt
y obtengo:
Kluyvera
El problema es que en algunos archivos el segundo campo no corresponde a la categoría taxonómica de género, sino que el género está precedido por la cadena “candidatus”:
cat file_2.txt | grep '>'
> NTKC01000006.1 Candidatus Thioglobus sp. MED-G25 SUP05-clade-MED-G25-C6, whole genome shotgun sequence
En el registro anterior, “Thioglobus” es el género de la especie. Entonces, cuando intento el comando awk anterior, me devuelve “Candidatus”.
Quiero que awk imprima “este archivo tiene candidatus” en lugar de extraer el segundo campo para ese registro.
davy.ai
Para lograr esto, puedes modificar el comando awk para verificar si el segundo campo comienza con la cadena “Candidatus”. Si es así, entonces imprime el mensaje deseado, de lo contrario imprime el segundo campo como antes. Así es como se vería el nuevo comando:
Ahora, cuando ejecutes este comando en “file_2.txt”, imprimirá “Este archivo tiene Candidatus” en lugar de “Candidatus”. Para archivos donde el segundo campo corresponda a la categoría taxonómica de género, aún imprimirá el nombre del género como antes.