TabelleWie kann man Fälle zählen, egal in welchem Fall?
chr10 10482 10484 0 11 + CA
chr10 10486 10488 0 12 + ca
chr10 10487 10489 0 13 + Ca
chr10 10490 10492 0 13 + cA
chr10 10491 10493 0 12 + CT
chr10 10494 10496 6.66667 15 + ca
chr10 10495 10497 6.66667 15 + cc
I die Zählung der Anzahl der Zeilen in der Spalte 7 möchte, wo „CA“ kann in Groß- oder Kleinbuchstabe zu sein, unabhängig von dem einen der beiden Buchstaben gefunden werden.
Das würde gewünschte Ausgangs 5. sein
Die beiden Befehle (unten) geben eine leere Ausgabe
cat table | awk ' $7 ==/^[Cc][Aa]/{++count} END {print count}'
awk 'BEGIN {IGNORECASE = 1} $7==/"CA"/ {++count} END {print count}' table
Der unterhalb Befehl ein Wert von 1
awk 'BEGIN {IGNORECASE = 1} END {if ($7=="CA"){++count} {print count}}' table
Hinweis liefert: my Die tatsächliche Tabelle ist mehrere zehn Millionen Zeilen lang, daher möchte ich keine Tabelle als Zwischenprodukt schreiben, um zu zählen. (Ich muss diese Aufgabe auch für andere Dateien wiederholen).
Bitte beachten Sie, dass IGNORECASE nur eine Funktion von GNU awk (gawk) ist und nicht in anderen awk-Implementierungen verfügbar ist. – ghoti
Würde auch 'grep -c -w -i 'ca $' table' nicht ausreichen? Oder bauen Sie neben dem Zählen noch weitere Funktionen in Ihr awk-Skript ein? – ghoti