it-swarm.com.de

Wie finde ich die Anzahl der wiederholten Wörter in einer Datei per Befehl?

wie finde ich die Anzahl der wiederholten Wörter in der Datei am Satzanfang? z.B.

abc bdbdndnvd hddh hcjdhjc  
dgdgd ghcdggcd abc hjdhcj 
abc ghdsgcgdc cdghcgd dhgch 
hshhj hcdhchd hdjchjd 

Ausgabe:

abc 

nur interessiert an wiederholten Word in der ganzen Datei nur am Anfang. Wenn dieses Wort irgendwo anders nicht gezählt werden soll. Im obigen Beispiel wird abc zweimal wiederholt. Kann mir jemand vorschlagen, wie ich dies mit Befehl tun kann? Ich benutze Ubuntu 16.04.

2
Avani badheka

mit cut und uniq

cut -d" " -f1 | sort | uniq -d

Der Befehl cut extrahiert das erste Wort jeder Zeile, und sort in Kombination mit uniq -d druckt nur die duplizierten Wörter.

5
Wayne_Yux

awk verwenden:

awk '{a[$1]++} END {for (i in a) if (a[i] > 1) print i}'

Dies zählt nur, wie oft das erste Wort in der Zeile ($1) gesehen wurde und speichert es in einem Array. Machen Sie dann eine Schleife über alle bisher angezeigten Array-Elemente und drucken Sie die Elemente aus, die mehrmals angezeigt wurden.

Natürlich bin ich in die Brunft geraten, Arrays in END durchzuschleifen. steeldriver merkt an, dass ich nicht muss:

awk 'a[$1]++ == 1' file
4
muru