2017-10-30 3 views
0

Ich habe diese Tabelle:Linux- awk für zwei Variablen in einer Spalte suche

enter image description here

Es ist eine Tabellenkalkulationsdatei, glaube ich.

Es hat Tausende von Zeilen und insgesamt 20 Spalten. Ich möchte alle diese Ergebnisse auf bestimmte Werte in bestimmten Spalten herunter filtern.

Also wollte ich alle SNPs auf Chromosom 1 (zweite Spalte) und alle auf dem + Strang (siebte Spalte) und entweder A/T oder C/T (zehnte Spalte) finden. Geben Sie dann die Anzahl der SNPs zurück, die diesen entsprechen.

Bisher habe ich versucht this-

awk 'BEGIN{OFS=FS="\t"} $1=="chr1" && $7=="+" && $10=="A/T" SNP.txt | wc -l 

Ich weiß nur nicht, wie Spalte erhalten 10 zu, dass und/oder ich will.

Vielen Dank im Voraus

+5

Bild durch Text ersetzen. – Cyrus

+2

https://stackoverflow.com/questions/15839723/awk-or-statement –

+1

Wir können keinen Code schreiben, um ein Bild zu analysieren. Präzise, ​​testbare Beispieleingabe und erwartete Ausgabe - etwas, gegen das wir eine mögliche Lösung testen können. –

Antwort

0

Sie wird Ende Zitat

fehlt
awk -F'\t' '$1=="chr1" && $7=="+" && $10~/^(A|C)\/T$/" {count++} 
      END {print count}' SNP.txt 

offensichtlich nicht auf dem Bild getestet. Angenommen, das Trennzeichen ist ein Tab wie in Ihrem Skript.

die letzte Bedingung kann zu ($10=="A/T" || $10=="C/T") geändert werden, vielleicht einfacher, auf diese Weise zu lesen.