использовать awk для идентификации многострочных записей и фильтрации

Мне нужно обработать файл больших данных, содержащий многострочные записи, пример ввода:

1  Name      Dan
1  Title     Professor
1  Address   aaa street
1  City      xxx city
1  State     yyy
1  Phone     123-456-7890
2  Name      Luke
2  Title     Professor
2  Address   bbb street
2  City      xxx city
3  Name      Tom
3  Title     Associate Professor
3  Like      Golf
4  Name
4  Title     Trainer
4  Likes     Running

Обратите внимание, что первое целочисленное поле уникально и действительно идентифицирует всю запись. Таким образом, в приведенном выше вводе у меня действительно есть 4 записи, хотя я не знаю, сколько строк атрибутов может иметь каждая запись. Мне нужно: - определить действительную запись (должны быть поля «Имя» и «Заголовок») - вывести доступные атрибуты для каждой допустимой записи, скажем "Имя", "Заголовок", "Адрес" обязательные поля.

Пример вывода:

1  Name      Dan
1  Title     Professor
1  Address   aaa street
2  Name      Luke
2  Title     Professor
2  Address   bbb street
3  Name      Tom
3  Title     Associate Professor

Итак, в выходном файле запись 4 удалена, так как в ней нет поля «Имя». Запись 3 не имеет поля «Адрес», но все еще печатается на выходе, поскольку это действительная запись с «Именем» и «Заголовком».

Могу ли я сделать это с помощью awk? Но как мне идентифицировать всю запись, используя первое поле «id» в каждой строке?

Большое спасибо эксперту по сценариям оболочки unix за помощь! :)

5
задан trillions 30 May 2012 в 22:38
поделиться