#!/bin/bash
# Funktion "wrdcnt" definieren: 
# wrdcnt file...
#
# Gib eine nach Häufigkeit sortierte Liste aller in den angegebenen Files
# mehr als einmal vorkommenden Wörter aus
# Unterscheide dabei nicht zwischen Groß- und Kleinschreibung
# (alles klein schreiben)

function wrdcnt ()
{
  cat "$@" |
# alles klein schreiben
  tr '[:upper:]' '[:lower:]' |
# Jede Folge von Zeichen, die *kein* Buchstabe sind, durch ein \n ersetzen
# ==> ein Wort pro Zeile
# Laut Standard müsste das '[\n*]' sein, aber bei unserem tr reicht auch '\n'
# -c ... complement: alle Zeichen, die *nicht* in der ersten Menge sind
# -s ... squeeze: Nicht ein Zeichen Output pro Zeichen,
#        sondern pro Folge von Zeichen 
  tr -sc '[:alpha:]' '\n' |
# uniq braucht sortierten Input 
  sort |
# mehrfache Zeilen zu einer Zeile mit Count zusammenfassen
# einzelne Zeilen unterdrücken
  uniq -cd |
# numerisch sortieren
  sort -n
}
