Bir dosyada başka bir dosyada listelenen deseni bulma


15

Bir dosyada listelenen kalıpları bulmak ve başka bir dosyada bulmak istiyorum. İkinci dosyada virgülle ayrılmış kalıplar bulunur.

örneğin ilk dosya F1'in genleri vardır

ENSG00000187546
ENSG00000113492  
ENSG00000166971

ve ikinci dosya F2'de ihtiyacım olan daha fazla sütun (beş sütun) ile birlikte bu genler var

 region     gene           chromosome  start       end

 intronic   ENSG00000135870 1   173921301   173921301
intergenic  ENSG00000166971(dist=56181),ENSG00000103494(dist=37091) 16 53594504    53594504
ncRNA_intronic  ENSG00000215231 5   5039185 5039185
intronic    ENSG00000157890 15  66353740    66353740

Dolayısıyla ikinci dosyada bulunan ENSG00000166971 geni, virgülle ayrılmış başka bir geni olduğu için grep'te görünmez.

Kodum:

grep -f "F1.txt" "F2.txt" >output.txt

Biri mevcut olsa bile bu değerleri ve onunla ilişkili verileri istiyorum.Bunu yapmanın herhangi bir yolu var mı?


1
grepÇapa uygulamanızın kalıplarını varsayılan olarak tutturması mümkün mü ? Mu grep -f <(echo a) <(echo 'a,b')herhangi bir çıktı üretmek?
Joseph R.

Yanıtlar:


11

Hangi sürümünü grepkullanıyorsunuz? Kodunuzu denedim ve aşağıdaki sonuçları aldım:

$ grep -f file1 file2
ENSG00000187546
ENSG00000113492
ENSG00000166971,ENSG00000186106

Sadece kullanabilirsiniz maç sonuçları istiyorsanız grep'ın -oanahtarı tek şey bildirmek için bu maçı:

$ grep -o -f file1 file2 
ENSG00000187546
ENSG00000113492
ENSG00000166971

grep versiyonu

$ grep --version
grep (GNU grep) 2.14
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Mike Haertel and others, see <http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>.

F1.txt'de başıboş karakterler mi var?

Bu hata ayıklama sırasında dosyada 2. satırın sonunda birkaç sokak boşlukları fark ettim F1.txt. Bunları kullanarak görebilirsiniz hexdump.

$ hexdump -C ff1
00000000  45 4e 53 47 30 30 30 30  30 31 38 37 35 34 36 0a  |ENSG00000187546.|
00000010  45 4e 53 47 30 30 30 30  30 31 31 33 34 39 32 20  |ENSG00000113492 |
00000020  20 0a 45 4e 53 47 30 30  30 30 30 31 36 36 39 37  | .ENSG0000016697|
00000030  31 0a                                             |1.|
00000032

Onlar Burada onları görebileceği 20. ASCII kodları olarak çıkagelmeden: 32 20 20 0a.


1
grep --version GNU grep 2.6.3 Telif Hakkı (C) 2009 Özgür Yazılım Vakfı, Inc. Lisans GPLv3 +: GNU GPL sürüm 3 veya üstü < gnu.org/licenses/gpl.html > Bu ücretsiz bir yazılımdır: ücretsiz olarak değiştirebilirsiniz ve yeniden dağıtın. Yasaların izin verdiği ölçüde GARANTİ YOKTUR. Eşleşmeleri sadece söylediğiniz gibi değil, bireyler olarak var ise alıyorum.Kesinlikle, alacağım tek maç eşleşecek desenleri içeren dosyadaki son kalıp.
Ron

1
Ben daha az satırlarla rağmen benim ikinci dosyanın daha tam sürümünü yapıştırılan ve it.It ikinci dosyadan ikinci satır ile eşleşmiyor için arama denedi
Ron

1
@Ron - F1.txt dosyasındaki dizelerin sonunda soruna neden olan başıboş karakterler var. Sadece grep'te iyi çalıştığını doğruladı (GNU grep) 2.5.1
slm

1
Sadece dosyayı Unix-LF formatında metin wrangler kaydetti ve şimdi çalışıyor !!
Ron

2
@Ron - evet beyaz eğlence 8-)
slm
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.