'Verdadeiro' corresponde a grep ou awk

1

Para um projeto em que estou trabalhando, preciso de uma lista de identificadores que precisa corresponder especificamente a um determinado padrão.

Eu basicamente tenho uma lista de padrões em um arquivo, e eu quero usar esse arquivo em outro arquivo para escolher as linhas relevantes.

Felizmente, grep -f patternfile.txt otherfile.txt > releventlinesfile.txt não funciona. Um grep -w nem.

A estrutura do arquivo de otherfile.txt é:

test_id gene_id gene    locus   sample_1        sample_2        status  value_1 value_2 log2(fold_change)       test_stat       p_value q_value significant   
TSS10019        XLOC_007800     ABC73140       1:27498963-27503819     BA  BB  NOTEST  0.666344        0.628569        -0.0841946      0       1       1       no
TSS1002 XLOC_000726     ABC14350       1:4907952-4913152       BA  BB  NOTEST  0       0       0       0       1       1       no
TSS10020        XLOC_007801     ABC73150       1:27504093-27506154     BA  BB  OK      11.8553 13.3817 0.174729        1.26968 0.02755 0.107242        no
TSS10021        XLOC_007802     ABC73165       1:27508724-27508949     BA  BB  NOTEST  0       0       0       0       1       1       no
TSS10022        XLOC_007803     ABC73170       1:27511324-27514797     BA  BB  OK      0.893787        0.557083        -0.682037       -0.590335       0.33135 0.575735      -no

E a estrutura de arquivos do patternfile.txt é:

TSS10020
TSS10056
TSS10378
TSS10708
TSS11795

A saída que eu quero:

TSS10020        XLOC_007801     ABC73150       1:27504093-27506154     BA  BB  OK      11.8553 13.3817 0.174729        1.26968 0.02755 0.107242        no
    
por Dymphy 19.09.2016 / 10:40

2 respostas

1

Você precisa combinar as opções -w e -f de grep para corresponder apenas palavras inteiras e não obter correspondências parciais em seus resultados:

grep -wf patternfile.txt otherfile.txt > releventlinesfile.txt 
    
por 19.09.2016 / 12:50
1

Estou um pouco confuso com o número de arquivos.

  • lijst_expressie.txt
  • sig_splicing.txt
  • splicing.diff
  • tss_group_exp.diff
  • tss_lijst.txt

para reduzir:

I want to find TSS from lss_lijst.txt in splicing.diff

usando uma pequena lista: tss_lijst.txt

TSS1
TSS10

e o splicing.diff que você deu, você pode extrair o TSS listado no arquivo1 usando

awk 'NF==1{ tss[$1]=1 ; next ; } $1 in tss { print ;}' tss_lijst.txt splicing.diff
TSS1    XLOC_000001     AT1G01010       1:3630-5899     BAY_ST  BAY_LP  OK      0       0       0.219269        0       0.1726  0.474413        no
TSS10   XLOC_000007     AT1G01180       1:75404-76921   BAY_ST  BAY_LP  OK      0       0       0.0277474       0       0.77985 0.900632        no

para obter o sim

awk '$14 == "yes" ' splicing.diff
    
por 19.09.2016 / 11:19

Tags