У меня есть файл с примерно 1000 строками данных, который выглядит следующим образом
ZIPCODE;STREETNAME;NAME;MAIL-ADDRESS
12345;Mainstreet 1;Anton;anton@gmail.com
23456;First Street 3;Mike;mike@yahoo.com
12345;Mainstreet 15;Tom;tom@hotmail.com
63434;Second Street 23;Anna;anna@mail.com
23456;First Street 74;Patrick;patrick@hotmail.com
32753;Third Street 28;Alex;alex@gmail.com
В этом случае я хочу определить (и сохранить только) строки, в которых совпадают первые 6 символов названия улицы по крайней мере, еще одну строку.
Требуемый вывод должен выглядеть следующим образом (оставляя только те строки, в которых первые 6 букв столбца 2 совпадают с некоторыми другими строками)
12345;Mainstreet 1;Anton;anton@gmail.com
23456;First Street 3;Mike;mike@yahoo.com
12345;Mainstreet 15;Tom;tom@hotmail.com (<- same street as #1)
23456;First Street 74;Patrick;patrick@hotmail.com (<- same street as #2)
Я понял, как просто сохранить строки с тем же полным названием улицы (столбец 2), используя awk
awk -F';' 'BEGIN {OFS = FS} { c[$2]++; l[$2,c[$2]]=$0 } END { for (i in c) { if (c[i] > 1) for (j = 1; j <= c[i]; j++) print l[i,j] } }' FILE
Я также знаю, что есть функция для подстрок (substr (s, index, len)) в awk, но я не могу понять, как изменить вышеупомянутый код, чтобы использовать только первые 6 букв столбца 2.
Есть идеи?
Спасибо, Патрик