#! /usr/bin/awk -f BEGIN { # Initialisierung ------------------------------------------------------ notes=0; num=0; } { # Bei allen Zeilen: Fussnotenmarker ersetzen --------------------------------- for (start=1; match(substr($0, start), /\[[0-9]+\]/, a); start+=RSTART+length("[" numbers[a[0]] "]")-1) { if (!(a[0] in numbers)) numbers[a[0]]=++num; $0 = substr($0, 0, start+RSTART-2) "[" numbers[a[0]] "]" \ substr($0, start+RSTART+RLENGTH-1); } } notes==0 || ! /^\[[0-9]+\]/ { # Nicht-Fussnotendefinitionen ausgeben ----------- print $0 } /^@footnotes:$/ { # Markierung erreicht, es folgen Fussnotendefinitionen ------- notes=1; } notes==1 && /^\[[0-9]+\]/ { # Fussnotendefinition extrahieren ------------------ match($0, /^\[([0-9]+)\].*$/, a); defs[a[1]]=$0; } END { # Fussnotendefinitionen sortiert ausgeben -------------------------------- for (i=1; i<=num; ++i) print defs[i]; }