Я написал match.awk для печати из каждой строки текстового файла текста, который соответствует моему регулярному выражению.
`{
line = $0
while (match(line, /([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9][A-Za-z]?))))[[:space:]]?[0-9][A-Za-z]{2})/)>0) {
print substr(line, RSTART, RLENGTH)
line = substr(line, RSART + RLENGTH) }}`
, который я затем вызываю с помощью
awk -f matches.awk file.txt
Он печатает данные правильно, но странным образом печатает некоторые записи гораздо чаще, чем они появляются в текстовом файле.
Эта одна запись, представляющая собой строку в file.txt '20 Lilac Grove, Leeds LS5 3AG, Lilac Grove', появляется в четыре раза больше (212), чем в file.txt (53).Есть идеи, почему это так?