$ cat file{1,2,3} | sort -k1,1 -k2n | uniq -c
2 key1: 1
1 key1: 20
1 key2: 2
1 key2: 23
1 key2: 223
1 key3: 3
1 key3: 23
1 key3: 213
1 key4: 0
2 key4: 4
werden Sie geben, dass key: 1
erscheint zweimal und key1: 20
existiert auch. Rohr
... | awk '$1>1'
2 key1: 1
2 key4: 4
gibt Ihnen, dass zwei Tasten Werte dupliziert haben. Oder alle in awk
$ awk '{a[$0]++}
END{for(k in a) if(a[k]>1) print a[k], k}' file{1,2,3}
2 key1: 1
2 key4: 4
können Sie Eingabe in irgendeiner Weise bash angeben können zur Liste der Dateien erweitern, zum Beispiel dir/*.txt
tun wird.
Nun, die Frage hat sich geändert! Nun ist es das, was Sie
$ cat file{1,2,3} | sort -k1,1 -k2n | uniq -c |
awk '{print $2}'| uniq -c |
awk 'BEGIN{print "keyword","count"} {print $2,$1}'
keyword count
key1: 2
key2: 3
key3: 3
key4: 2
oder, alle in einem einzigen awk
$ awk '{a[$0]++}
END{print "keyname", "count";
for(k in a) {split(k,b," ") c[b[1]]++}
for(k in c) {print k, c[k]}}' file{1,2,3}
keyname count
key3: 3
key4: 2
key1: 2
key2: 3
Zum Beispiel habe ich will wissen, key1 hat zwei verschiedene Werte (1 und 20) und möchte auch wissen für den Wert 1, wie viele Dateien diesen Wert teilen (in diesem Beispiel ist es 2 seit Datei 1 und Datei 2 teilen den gleichen Wert), während Datei 3 einen anderen Wert hat 20 –
Bitte fügen Sie Ihre gewünschte Ausgabe für diese Beispieleingabe zu Ihrer Frage hinzu. – Cyrus