Extrahieren Sie Zeilen aus einer großen tabulatorgetrennten Datei mithilfe einer Liste

Extrahieren Sie Zeilen aus einer großen tabulatorgetrennten Datei mithilfe einer Liste

Ich habe eine große Tab-Datei mit 15 Spalten (DATEI1) und eine Liste (DATEI2) mit Namen, die in der Tabelle erscheinen sollen. Das Problem ist, dass der Name in den Spalten 4 bis 10 in DATEI1 erscheinen kann und die Groß-/Kleinschreibung nicht übereinstimmt.

Ich möchte einen Befehl, der die Zeile nach einem Treffer durchsucht und dann die ganze Zeile druckt. Vorzugsweise sollte dieser nicht zwischen Groß- und Kleinschreibung unterscheiden und keine Zeilen drucken, bei denen die Namen in DATEI2 Teil eines größeren Wortes sind.

Ich habe Folgendes versucht:

grep -Fwf FILE2 FILE1 > out 
xargs -I {} grep "^{}" FILE1 < FILE2 > out 

Das erste kopiert einfach FILE1 in out. Das zweite gibt eine leere Ausgabedatei aus.

Ich habe auch ein paar awkBefehle ausprobiert, die entweder eine leere Datei ergeben oder wie oben DATEI1 kopieren. Ich versuche im Moment, meine Linux-Kenntnisse zu verbessern. Wenn Sie mir also Ihre Methode erklären könnten, wäre ich Ihnen sehr dankbar.

Datei1

tax_id GeneID  Symbol  LocusTag        Synonyms        dbXrefs chromosome      map_location    description     type_of_gene    Symbol_from_nomenclature_authority      Full_name_from_nomenclature_authority Nomenclature_status      Other_designations      Modification_date
7       5692769 NEWENTRY        -       -       -       -       -       Record to support submission of GeneRIFs for a gene not in Gene (Azotirhizobium caulinodans.  Use when strain, subtype, isolate, etc. is unspecified, or when different from all specified ones in Gene.).     other   -       -       -       -       20160818
9       1246500 repA1   pLeuDn_01       -       -       -       -       putative replication-associated protein protein-coding  -       -       -       -       20160813
9       1246501 repA2   pLeuDn_03       -       -       -       -       putative replication-associated protein protein-coding  -       -       -       -       20160716
9       1246502 leuA    pLeuDn_04       -       -       -       -       2-isopropylmalate synthase      protein-coding  -       -       -       -       20160903
9       1246503 leuB    pLeuDn_05       -       -       -       -       3-isopropylmalate dehydrogenase protein-coding  -       -       -       -       20150520
9       1246504 leuC    pLeuDn_06       -       -       -       -       isopropylmalate isomerase large subunit protein-coding  -       -       -       -       20160806
9       1246505 leuD    pLeuDn_07       -       -       -       -       isopropylmalate isomerase small subunit protein-coding  -       -       -       -       20160730
9       1246509 ibp     pBPS1_01        -       -       -       -       Ibp protein     protein-coding  -       -       -       -       20150801
9       1246510 repA1   pBPS1_02        -       -       -       -       repA1 protein   protein-coding  -       -       -       -       20160813

Datei2

sacX
arcB
metB
sprT
adrB_2
fadD
trpC
ansP2
group_1428
plsX
repA

Antwort1

Antworten Sie in den Kommentaren oben siehe Antworten von @Philippos und @George Vasiliou

Kurz gesagt lautet die Antwort grep -Fwf FILE2 FILE1 > out

Ich hatte ein Problem, bei dem beim Ausführen des Befehls DATEI1 kopiert wurde. Dies geschah aufgrund von nachstehenden Leerzeilen in DATEI2. Als ich diese entfernte, funktionierte der Befehl einwandfrei.

Da bei einigen Texten in den Dateien die Groß- und Kleinschreibung möglicherweise nicht übereinstimmt, habe ich im obigen Befehl -i eingefügt.

Danke an alle, die geholfen haben.

verwandte Informationen