Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

321
Visualizações
Pipe awk y grep para guardar un campo particular de un archivo

Lo que quiero lograr:

  • grep: extrae líneas con el número y la longitud de contig
  • awk: eliminar "longitud:" de la columna 2
  • ordenar: ordenar por longitud (en orden descendente)

Código actual

 grep "length:" test_reads.fa.contigs.vcake_output | awk -F:'{print $2}' |sort -g -r > contig.txt

Ejemplo de contenido de test_reads.fa.contigs.vcake_output :

 >Contig_11 length:42 ACTCTGAGTGATCTTGGCGTAATAGGCCTGCTTAATGATCGT >Contig_0 length:99995 ATTTATGCCGTTGGCCACGAATTCAGAATCATATTA

Rendimiento esperado

 >Contig_0 99995 >Contig_11 42
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Con las muestras mostradas, intente seguir la solución awk + sort aquí.

 awk -F'[: ]' '/^>/{print $1,$3}' Input_file | sort -nrk2

Explicación: la explicación simple sería ejecutar el programa awk para leer Input_file primero, donde establecer el separador de campo como : O espacio y verificar la condición si la línea comienza desde > luego imprimir su primer y segundo campo y luego enviar su salida (como una entrada estándar) para sort comando donde ordenarlo desde el segundo campo para obtener el resultado requerido.

over 4 years ago · Santiago Trujillo Relatório

0

Quizás esto, combinando grep y awk:

 awk -F '[ :]' '$2 == "length" {print $1, $3}' file | sort ...
over 4 years ago · Santiago Trujillo Relatório

0

Suposiciones:

  • si más de una fila tiene la misma longitud, ordene adicionalmente la primera columna usando la ordenación de 'versión'

Agregar algunas líneas adicionales a la entrada de muestra:

 $ cat test_reads.fa.contigs.vcake_output >Contig_0 length:99995 ATTTATGCCGTTGGCCACGAATTCAGAATCATATTA >Contig_11 length:42 ACTCTGAGTGATCTTGGCGTAATAGGCCTGCTTAATGATCGT >Contig_17 length:93 ACTCTGAGTGATCTTGGCGTAATAGGCCTGCTTAATGATCGT >Contig_837 ignore-this-length:1000000 ACTCTGAGTGATCTTGGCGTAATAGGCCTGCTTAATGATCGT >Contig_8 length:42 ACTCTGAGTGATCTTGGCGTAATAGGCCTGCTTAATGATCGT

Una idea sed/sort :

 $ sed -rn 's/(>[^ ]+) length:(.*)$/\1 \2/p' test_reads.fa.contigs.vcake_output | sort -k2,2nr -k1,1V

Donde:

  • -En : habilita la compatibilidad extendida con expresiones regulares y suprime la impresión normal de los datos de entrada
  • (>[^ ])+) - (primer grupo de captura) - > seguido de 1 o más caracteres que no sean espacios
  • length: - espacio seguido de length:
  • (.*) - (segundo grupo de captura) - 0 o más caracteres (después de los dos puntos)
  • $ - fin de línea
  • \1 \2/p - imprime el primer grupo de captura + <space> + segundo grupo de captura
  • -k2,2nr - ordenar por segundo campo r delimitado por espacios n en orden numérico inverso
  • -k1,1V - V por el primer campo (delimitado por espacios) en el orden de la versión

Esto genera:

 >Contig_0 99995 >Contig_17 93 >Contig_8 42 >Contig_11 42
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda