Mit AWK, um den Inhalt jeder Zeile in file
mit $2
in list
übereinstimmen. Beide Dateien sind durch Tabulatoren getrennte und es kann ein Raum oder ein Sonderzeichen im Namen in list
angepasst sein wird, zum Beispiel in file
der Name ist BRCA1
aber in list
der Name ist BRCA 1
oder in file
Name ist BCR
aber in list
der Name BCR/ABL
.awk zum Drucken von Feldern, die unter Verwendung von Bedingungen und einem Standardwert für nicht übereinstimmen in zwei Dateien übereinstimmen
Wenn es eine Übereinstimmung und $4
von list
ist, hat full gene sequence
darin, dann $2 and $1
werden durch eine Lasche getrennt gedruckt. Wenn keine Übereinstimmung gefunden wird, wird der Name, der nicht übereinstimmte, und 14
getrennt durch eine Registerkarte gedruckt. Das awk unten wird ausgeführt, aber keine Ausgabeergebnisse. Vielen Dank :).
Datei
BRCA1
BCR
SCN1A
fbn1
Liste
List code gene gene name methodology
81 DMD dystrophin deletion analysis and duplication analysis
811 BRCA 1 BRCA2 full gene sequence and full deletion/duplication analysis
70 ABL1 ABL1 gene analysis variants in the kinse domane
71 BCR/ABL t(9;22) full gene sequence
awk
awk -F'\t' -v OFS="\t" 'FNR==NR{A[$1]=$0;next} ($2 in A){if($4=="full gene sequence"){print A[$2],$1}} ELSE {print A[$2],"14"}' file list
desir ed Ausgang
BRCA1 811
BCR 71
SCN1A 14
fbn1 85
bearbeiten
List code gene gene name methodology
85 fbn1 Fibrillin full gene sequencing
95 FBN1 fibrillin del/dup
Ergebnis
85 fbn1 Fibrillin full gene sequencing
da nur diese Linie hat full gene sequencing
darin, nur diese gedruckt.
Definieren Sie 'match': string oder regexp? teilweise oder voll? Groß-/Kleinschreibung beachten? Ohne diese Informationen erhalten Sie wahrscheinlich eine Lösung, die für einen bestimmten Test-Eingabe-Set funktioniert, aber 6 Monate später an Ihren echten Daten scheitert. Im Moment haben Sie zwei verschiedene Lösungen, die jeweils sehr unterschiedliche Annahmen darüber treffen, was Sie unter "Übereinstimmung" verstehen und die sich bei unterschiedlichen Input-Sets unterschiedlich verhalten, obwohl sie bei der von Ihnen bereitgestellten Beispieleingabe die gleiche Ausgabe liefern. –
Übereinstimmung ist eine Zeichenfolge, die eine vollständige und ohne Berücksichtigung der Groß-/Kleinschreibung ist .... das ist "BRCA1" ist die Übereinstimmung, aber es könnte "brca1" oder "brca 1" sein.Außerdem habe ich gerade bemerkt, dass '$ 4' oder' vollständige Gensequenz' nicht enthalten ist und da es mehrere Einträge für die gleiche Übereinstimmung geben kann, macht es dies einzigartig. Ich habe auch ein Beispiel in die Post eingefügt. Vielen Dank :). – Chris
Der Name in 'file' entspricht einer Zeichenkette in' $ 2' von 'list'. In 'list' kann der passende Name Teil der Zeichenkette sein, aber immer der vollständige Name aus' file'. Das ist der Name "BCR" entspricht der "$ 2" -String in "Liste", "BCR/ABL". Vielen Dank :). – Chris