Awk

Aus Thomas Wiki
Version vom 21. Januar 2012, 15:51 Uhr von Thomas (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „===man page === ==== DESCRIPTION ==== Gawk is the GNU Project's implementation of the AWK programming language. It conforms to the definition of the language…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

man page

DESCRIPTION

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

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 folgenden Script lässt sich die Aufgabe jedoch lösen:

Das awk script:

# 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

Das Kommando

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

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

Das Kommando

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.