Читаем Командная строка Linux полностью

[me@linuxbox ~]$ head distros-versions.txt

Fedora           10

Ubuntu           8.10

SUSE             11.0

Fedora           9

Ubuntu           8.04

Fedora           8

Ubuntu           7.10

SUSE             10.3

Fedora           7

Ubuntu           7.04

В заключение этапа подготовки извлечем даты выпусков и сохраним их в файле distro-dates.txt:

[me@linuxbox ~]$ cut -f 3 distros-by-date.txt > distros-dates.txt

[me@linuxbox ~]$ head distros-dates.txt

11/25/2008

10/30/2008

06/19/2008

05/13/2008

04/24/2008

11/08/2007

10/18/2007

10/04/2007

05/31/2007

04/19/2007

Теперь у нас есть все необходимое. Чтобы завершить процедуру, с помощью paste добавим колонку с датами перед названиями и номерами версий дистрибутивов, создав хронологический список. Для этого достаточно просто вызвать paste и передать ей файлы в требуемом порядке.

[me@linuxbox ~]$ paste distros-dates.txt distros-versions.txt

11/25/2008       Fedora          10

10/30/2008       Ubuntu          8.10

06/19/2008       SUSE            11.0

05/13/2008       Fedora          9

04/24/2008       Ubuntu          8.04

11/08/2007       Fedora          8

10/18/2007       Ubuntu          7.10

10/04/2007       SUSE            10.3

05/31/2007       Fedora          7

04/19/2007       Ubuntu          7.04

12/07/2006       SUSE            10.2

10/26/2006       Ubuntu          6.10

10/24/2006       Fedora          6

06/01/2006       Ubuntu          6.06

05/11/2006       SUSE            10.1

03/20/2006       Fedora          5


join — объединение строк из двух файлов по общему полю

Программа join действует подобно paste, в том смысле, что она добавляет колонки в файл, но делает это по-своему. Операция join у многих ассоциируется с реляционными базами данных, где она объединяет записи из нескольких таблиц по общему ключевому полю. Программа join выполняет ту же операцию. Она объединяет данные из множества файлов, опираясь на общее ключевое поле.

Чтобы понять, как действует операция join в реляционной базе данных, представьте очень маленькую базу данных с двумя таблицами, по одной записи в каждой. Первая таблица, с именем CUSTOMERS, имеет три поля: номер клиента (CUSTNUM), имя клиента (FNAME) и фамилия клиента (LNAME):

CUSTNUM         FNAME   LNAME

=========       ======  ======

4681934         John    Smith

Вторая таблица, с именем ORDERS, имеет четыре поля: номер заказа (ORDERNUM), номер клиента (CUSTNUM), количество (QUAN) и пункт заказа (ITEM):

ORDERNUM        CUSTNUM         QUAN    ITEM

==========      =========       =====   ====

3014953305      4681934         1       Blue Widget

Обратите внимание, что обе таблицы имеют общее поле CUSTNUM. Это важно, так как оно устанавливает отношение между таблицами.

Применив операцию join, мы сможем объединить поля из двух таблиц, чтобы получить желаемый результат, например, для подготовки накладной. Проверяя совпадение значений в полях CUSTNUM обеих таблиц, операция join выдаст следующий результат:

FNAME   LNAME   QUAN    ITEM

======  ======  =====   ====

John    Smith   1       Blue Widget

Для демонстрации программы join нам понадобится пара файлов с общим ключом. Возьмем в качестве отправной точки файл distros-by-date.txt и из него сконструируем два дополнительных файла. Первый будет содержать даты выпусков (которые в этом примере будут играть роль общего ключа) и названия дистрибутивов:

[me@linuxbox ~]$ cut -f 1,1 distros-by-date.txt > distros-names.txt

[me@linuxbox ~]$ paste distros-dates.txt distros-names.txt > distros-key-names.txt

[me@linuxbox ~]$ head distros-key-names.txt

11/25/2008       Fedora

10/30/2008       Ubuntu

06/19/2008       SUSE

05/13/2008       Fedora

04/24/2008       Ubuntu

11/08/2007       Fedora

10/18/2007       Ubuntu

10/04/2007       SUSE

05/31/2007       Fedora

04/19/2007       Ubuntu

И второй — даты выпусков и номера версий:

[me@linuxbox ~]$ cut -f 2,2 distros-by-date.txt > distros-vernums.txt

[me@linuxbox ~]$ paste distros-dates.txt distros-vernums.txt > distros-keyvernums.txt

[me@linuxbox ~]$ head distros-key-vernums.txt

11/25/2008       10

10/30/2008       8.10

06/19/2008       11.0

05/13/2008       9

04/24/2008       8.04

11/08/2007       8

10/18/2007       7.10

10/04/2007       10.3

05/31/2007       7

04/19/2007       7.04

Теперь у нас есть два файла с общим ключом (поле «дата выпуска»). Здесь важно отметить, что файлы должны быть отсортированы по ключевому полю, чтобы программа join выдала правильный результат.

[me@linuxbox ~]$ join distros-key-names.txt distros-key-vernums.txt | head

11/25/2008 Fedora 10

Перейти на страницу:

Похожие книги

Основы программирования в Linux
Основы программирования в Linux

В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов

Нейл Мэтью , Ричард Стоунс , Татьяна Коротяева

ОС и Сети / Программирование / Книги по IT
Недокументированные и малоизвестные возможности Windows XP
Недокументированные и малоизвестные возможности Windows XP

Книга содержит подробные сведения о таких недокументированных или малоизвестных возможностях Windows XP, как принципы работы с программами rundll32.exe и regsvr32.exe, написание скриптов сервера сценариев Windows и создание INF-файлов. Р' ней приведено описание оснасток, изложены принципы работы с консолью управления mmc.exe и параметрами реестра, которые изменяются с ее помощью. Кроме того, рассмотрено большое количество средств, позволяющих выполнить тонкую настройку Windows XP.Эта книга предназначена для опытных пользователей и администраторов, которым интересно узнать о нестандартных возможностях Windows. Тем более что довольно часто эти возможности позволяют обойти ограничения на те или иные функции Windows, установленные администратором. Р

Роман Александрович Клименко

ОС и Сети, интернет / ОС и Сети / Книги по IT