#! /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];
}