Ich möchte Muster finden, die in einer Datei aufgelistet sind, und sie in einer anderen Datei finden. In der zweiten Datei werden diese Muster durch Kommas getrennt.
Zum Beispiel hat die erste Datei F1 Gene
ENSG00000187546
ENSG00000113492
ENSG00000166971
und die zweite Datei F2 hat diese Gene zusammen mit einigen weiteren Spalten (fünf Spalten), die ich brauche
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
Das Gen ENSG00000166971, das in der zweiten Datei enthalten ist, wird in grep nicht angezeigt, da es ein anderes Gen enthält, das durch Komma getrennt ist.
Mein Code ist:
grep -f "F1.txt" "F2.txt" >output.txt
Ich möchte diese Werte, auch wenn einer von ihnen vorhanden ist, und die damit verbundenen Daten. Gibt es eine Möglichkeit, dies zu tun?
grep
die Muster standardmäßig verankert? Hatgrep -f <(echo a) <(echo 'a,b')
erzeugen eine Ausgabe?Antworten:
Welche Version von verwendest
grep
du? Ich habe Ihren Code ausprobiert und die folgenden Ergebnisse erhalten:Wenn Sie nur die übereinstimmenden Ergebnisse wünschen, können Sie mit
grep
dem-o
Schalter nur die übereinstimmenden Elemente melden:grep version
Streuende Zeichen in F1.txt?
Beim weiteren Debuggen sind mir am Ende der 2. Zeile in der Datei mehrere Leerzeichen aufgefallen
F1.txt
. Sie können sie mit sehenhexdump
.Sie zeigen sich mit als ASCII - Codes 20. Sie können sie in ihnen sehen hier:
32 20 20 0a
.quelle