2017-07-27 1 views
1

Ich habe Daten wie folgt festgelegt:awk Druck Anzahl von Zeilen nur in uniq Spalte

1 A 
1 B 
1 C 
2 A 
2 B 
2 C 
3 B 
3 C 

Und ich habe ein Skript, das mir berechnet:

  1. Anzahl der Vorkommen in Zeichenfolge suchen

  2. Anzahl der Reihen

    awk -v search="A" \ 
        'BEGIN{count=0} $2 == search {count++} END{print count "\n" NR}' input 
    

Das funktioniert ganz gut.

Ich möchte zu meinem awk eine Liner-Anzahl von eindeutigen Zeilen aus der ersten Spalte hinzufügen.

So soll die Ausgabe durch \ n getrennt werden:

2 
8 
3 

I awk Code dies in separatem tun kann, aber ich bin nicht in der Lage, es zu meinem ursprünglichen awk Code zu integrieren.

awk '{a[$1]++}END{for(i in a){print i}}' input | wc -l 

Jede Idee, wie es ohne Verrohrung in einer awk Lösung zu integrieren?

+1

rechts - es befestigt ist. Nummer 8 kommt von awk script - NR - es ist eine Anzahl aller Zeilen. – Geroge

+0

Nummer 2 ist das Auftreten in der zweiten Spalte "A" (es gibt zweimal) und Nummer 3 ist das Beispiel - eindeutige erste Spalte und berechnete Anzahl von Zeilen. – Geroge

Antwort

4

Sieht aus wie Sie wollen diese:

awk -v search="A" '{a[$1]++} 
        $2 == search {count++} 
        END{OFS="\n";print count+0, NR, length(a)}' file 
+0

funktioniert wie ein Charme :) danke! – Geroge

+0

Nicht realisiert, Länge (a) zu verwenden :) – Geroge

+1

Gern geschehen – hek2mgl