>_ IzzyLab

Практическое задание

awk: join двух файлов по ключу

сложно

Есть два файла с общим ключом в первом поле: /root/names.txt (id имя) и /root/ages.txt (id возраст). Соедини их по ключу и запиши в /root/joined.txt строки имя возраст, по возрастанию id.

Что потренируешь:
  • awk
  • join по ключу
  • NR и FNR
  • ассоциативные массивы
  • next

Разбор темы

Соединение двух файлов по общему ключу строится на двух встроенных переменных awk: NR считает строки суммарно по всем входным файлам, а FNR — только в текущем, сбрасываясь на каждом новом. Их равенство истинно ровно пока читается первый файл, что позволяет на первом проходе загрузить справочник «ключ→значение» в ассоциативный массив, а на строках второго файла — доставать из него совпадения по ключу. next не даёт правилам первого файла срабатывать на втором.

Что проверяется

  1. файлы соединены по ключу

Как это выглядит