Imprime todas as linhas, mas condicionalmente apenas fragmentos para algumas linhas

1

Eu tenho um arquivo de texto com esta aparência:

   rno-miR-344-5p
   miRPlus_11239/mmu-miR-383/rno-miR-383
   hsa-miR-301a/mmu-miR-301a/rno-miR-301a
   hsa-miR-199a-3p/hsa-miR-199b-3p/mmu-miR-199a-3p/mmu-miR-199b/rno-miR-199a-3p
   Empty
   Hy3
   rno-miR-1

   rno-miR-598-5p
   spike_control_h

   Empty

Eu gostaria de imprimir todas as linhas. MAS para aquelas linhas que contêm e. hsa-miR-301a / mmu-miR-301a / rno-miR-301a Eu gostaria de imprimir apenas a parte rno-miR-etc.

Eu tenho tentado fazer isso com o awk, mas eu estou fora de profundidade.

    
por duff 19.05.2014 / 19:15

1 resposta

2

assumindo que a barra só ocorra nas linhas que você está segmentando:

awk -F/ '{print $NF}' file

imprime apenas o último campo separado por barras. Nas linhas sem barra, o campo 1 também é o último campo.

Se você estiver segmentando especificamente as linhas que começam com hsa-miR , então:

awk -F/ '/^hsa-miR/ {print $NF; next} {print}' file
    
por 19.05.2014 / 19:18

Tags