grep -fB A
fará o que você está procurando; a opção -f
especifica um arquivo do qual os padrões são carregados, um padrão por linha. Qualquer linha em A
que corresponda a um padrão em B
será produzida.
Eu tenho dois arquivos.
arquivo A:
Chr1 Cufflinks exon 2903 3268 . + . gene_id "XLOC_000001"; transcript_id "TCONS_00000002"; exon_number "1"; oId "CUFF.1.2"; tss_id "TSS1";
Chr1 Cufflinks exon 3354 3616 . + . gene_id "XLOC_000001"; transcript_id "TCONS_00000002"; exon_number "2"; oId "CUFF.1.2"; tss_id "TSS1";
Chr1 Cufflinks exon 4357 4455 . + . gene_id "XLOC_000001"; transcript_id "TCONS_00000761"; exon_number "3"; oId "CUFF.1.2"; tss_id "TSS1";
arquivo B;
TCONS_00000066
TCONS_00000600
TCONS_00000761
TCONS_00000762
TCONS_00000773
Quero corresponder o arquivo B e imprimir onde houver correspondência. Nesse caso, o id no arquivo A está na 12ª coluna.
a saída deve ser como
Chr1 Cufflinks exon 4357 4455 . + . gene_id "XLOC_000001"; transcript_id "TCONS_00000761"; exon_number "3"; oId "CUFF.1.2"; tss_id "TSS1";
toda a linha do arquivo A deve estar no arquivo C
Eu tentei comandos do awk, mas falhei.
awk 'FNR==NR {a[$12];next}; !($12 in a)' B A >C
Por favor ajude.
Tags text-processing text