Awk

Aus Thomas Wiki
Zur Navigation springen Zur Suche springen

man page[Bearbeiten]

DESCRIPTION[Bearbeiten]

Gawk is the GNU Project's implementation of the AWK programming language. It conforms to the definition of the language in the POSIX 1003.2 Command Language And Utilities Standard. This version in turn is based on the description in The AWK Programming Language, by Aho, Kernighan, and Weinberger, with the additional features found in the System V Release 4 version of UNIX awk. Gawk also provides more recent Bell Laboratories awk extensions, and a number of GNU-specific extensions.

Pgawk is the profiling version of gawk. It is identical in every way to gawk, except that programs run more slowly, and it automatically produces an execution profile in the file awkprof.out when done. See the - -profile option, below.

Mehrfache Dateien finden[Bearbeiten]

Häufig stellt sich die Aufgabe gleiche Dateien zu identifizieren, die unterschiedliche Namen haben. Eine identische Größe, Speicherdatum etc. sind dazu nicht ausreichend. Die Aufgabe lässt sich wie folgt lösen:

  • Bestimmen des MD5 Hash Wertes für alle Dateien.
  • Sortieren der Dateien
  • Filtern der zusätzlichen Dateien mit awk.

Mit dem Script mehrfach.awk sich die Aufgabe jedoch lösen:

Script: mehrfach.awk:

# awk script um mehrfache Dateien mit
# unterschiedlichen Dateinamen zu finden
# input md5sum * | sort
BEGIN { md5sum = "" ; }
md5sum == $1 { print $2 }
md5sum != $1 { md5sum = $1 }

listet die mehrfachen Dateien bis auf die erste Datei. Kommando

Der folgende Befehl

md5sum * | sort -u | awk -F ' ' -f mehrfach.awk

listet alle zusätzlichen Kopien einer Dateien auf. (Die erste Datei ist nicht enthalten.)

Der nächste Befehl:

rm $(md5sum * | sort -u | awk -F ' ' -f mehrfach.awk)

löscht alle zusätzlichen Kopien einer Dateien.

Diese Variante ist wesentlich schneller, als die Möglichkeit jede Datei mit jeder zu vergleichen. Theoretisch könnten zwei unterschiedliche Dateien den gleichen Hash-Wert haben, die Wahrscheinlichkeit ist jedoch sehr gering.