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

242660           /usr/share/doc

197560           /usr/share/fonts

179144           /usr/share/gnome

146764           /usr/share/myspell

144304           /usr/share/gimp

135880           /usr/share/dict

76508            /usr/share/icons

68072            /usr/share/apps

62844            /usr/share/foomatic

С помощью параметров -nr мы получили сортировку по числовым значениям в обратном порядке, в результате наибольшие значения оказались в начале списка. Такой способ сортировки стал возможен, потому что числовые значения находятся в начале каждой строки. Но как быть, если потребуется отсортировать строки по числовым значениям, находящимся в середине строки, как, например, в результатах команды ls -l?

[me@linuxbox ~]$ ls -l /usr/bin | head

total 152948

-rwxr-xr-x 1 root   root      34824 2012-04-04 02:42 [

-rwxr-xr-x 1 root   root     101556 2011-11-27 06:08 a2p

-rwxr-xr-x 1 root   root      13036 2012-02-27 08:22 aconnect

-rwxr-xr-x 1 root   root      10552 2011-08-15 10:34 acpi

-rwxr-xr-x 1 root   root       3800 2012-04-14 03:51 acpi_fakekey

-rwxr-xr-x 1 root   root       7536 2012-04-19 00:19 acpi_listen

-rwxr-xr-x 1 root   root       3576 2012-04-29 07:57 addpart

-rwxr-xr-x 1 root   root      20808 2012-01-03 18:02 addr2line

-rwxr-xr-x 1 root   root     489704 2012-10-09 17:02 adept_batch

Забудем на время, что ls может сортировать свои результаты по размеру, и выполним сортировку с помощью sort.

[me@linuxbox ~]$ ls -l /usr/bin | sort -nr -k 5 | head

-rwxr-xr-x 1 root   root    8234216 2012-04-07 17:42 inkscape

-rwxr-xr-x 1 root   root    8222692 2012-04-07 17:42 inkview

-rwxr-xr-x 1 root   root    3746508 2012-03-07 23:45 gimp-2.4

-rwxr-xr-x 1 root   root    3654020 2012-08-26 16:16 quanta

-rwxr-xr-x 1 root   root    2928760 2012-09-10 14:31 gdbtui

-rwxr-xr-x 1 root   root    2928756 2012-09-10 14:31 gdb

-rwxr-xr-x 1 root   root    2602236 2012-10-10 12:56 net

-rwxr-xr-x 1 root   root    2304684 2012-10-10 12:56 rpcclient

-rwxr-xr-x 1 root   root    2241832 2012-04-04 05:56 aptitude

-rwxr-xr-x 1 root   root    2202476 2012-10-10 12:56 smbcacls

Программа sort часто вовлекается в обработку табличных данных, таких как результат команды ls выше. Если воспользоваться терминологией баз данных, об этой таблице можно сказать, что каждая строка — это запись и каждая запись состоит из множества полей, таких как атрибуты файла, счетчик ссылок, имя файла, размер файла и т.д. Программа sort способна обрабатывать поля по отдельности. Согласно той же терминологии баз данных, мы можем указать одно или несколько ключевых полей, которые должны использоваться как ключи сортировки. В примере, приведенном выше, мы добавили параметры n и r, чтобы выполнить сортировку по числовым значениям в порядке убывания, а также параметр -k с аргументом 5, чтобы указать, что сортировка должна выполняться по пятому полю.

Параметр очень интересен и обладает множеством любопытных свойств, но прежде чем приступить к их обсуждению, поговорим о том, как sort определяет поля. Рассмотрим очень простой текстовый файл, содержащий единственную строку с именем автора этой книги:

William   Shotts

По умолчанию sort «видит» в этой строке два поля. Первое поле содержит последовательность символов William, второе — последовательность символов Shotts, то есть пробельные символы (пробелы и символы табуляции) интерпретируются как разделители полей, и эти разделители включаются в поле при выполнении сортировки.

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

-rwxr-xr-x 1 root root 8234216 2012-04-07 17:42 inkscape

Для следующей серии экспериментов возьмем файл с историей выпуска новых версий трех популярных дистрибутивов Linux в период с 2006 по 2008 год. Каждая строка в файле содержит три поля: название дистрибутива, номер версии и дата выпускав формате ММ/ДД/ГГГГ:

SUSE             10.2    12/07/2006

Fedora           10      11/25/2008

SUSE             11.0    06/19/2008

Ubuntu           8.04    04/24/2008

Fedora           8       11/08/2007

SUSE             10.3    10/04/2007

Ubuntu           6.10    10/26/2006

Fedora           7       05/31/2007

Ubuntu           7.10    10/18/2007

Ubuntu           7.04    04/19/2007

SUSE             10.1    05/11/2006

Fedora           6       10/24/2006

Fedora           9       05/13/2008

Ubuntu           6.06    06/01/2006

Ubuntu           8.10    10/30/2008

Fedora           5       03/20/2006

С помощью текстового редактора (например, vim) введите эти данные и сохраните в файле с именем distros.txt.

Далее попробуем отсортировать файл и посмотрим, что из этого получится:

[me@linuxbox ~]$ sort distros.txt

Fedora           10      11/25/2008

Fedora           5       03/20/2006

Fedora           6       10/24/2006

Fedora           7       05/31/2007

Fedora           8       11/08/2007

Fedora           9       05/13/2008

SUSE             10.1    05/11/2006

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

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

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

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

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

ОС и Сети / Программирование / Книги по IT
1001 совет по обустройству компьютера
1001 совет по обустройству компьютера

В книге собраны и обобщены советы по решению различных проблем, которые рано или поздно возникают при эксплуатации как экономичных нетбуков, так и современных настольных моделей. Все приведенные рецепты опробованы на практике и разбиты по темам: аппаратные средства персональных компьютеров, компьютерные сети и подключение к Интернету, установка, настройка и ремонт ОС Windows, работа в Интернете, защита от вирусов. Рассмотрены не только готовые решения внезапно возникающих проблем, но и ответы на многие вопросы, которые возникают еще до покупки компьютера. Приведен необходимый минимум технических сведений, позволяющий принять осознанное решение.Компакт-диск прилагается только к печатному изданию книги.

Юрий Всеволодович Ревич

Программирование, программы, базы данных / Интернет / Компьютерное «железо» / ОС и Сети / Программное обеспечение / Книги по IT
Access 2002: Самоучитель
Access 2002: Самоучитель

В книге рассматривается широкий круг вопросов, связанных с использованием программной среды Access 2002, которая является составной частью пакета Office 2002 и предназначена для создания банка данных в самых различных предметных областях.Подробно описывается методика проектирования объектов базы данных (таблицы, формы, отчеты, страницы доступа к данным, запросы, модули).Детально обсуждаются вопросы создания интегрированной базы данных в единой среде Access 2002: формирование БД с нуля, конвертирование в программную среду баз данных, созданных в ином программном окружении – Clarion, FoxPro.Особое внимание уделяется формированию разнообразных запросов к интегрированной базе данных Access 2002 с использованием языков программирования SQL, VBA и макросов.Приводятся общие сведения о возможностях языка обмена данными между различными компьютерами и приложениями (XML). Описываются возможности использования гиперссылок, связывающих базу данных с другими программными продуктами. Объясняется, как можно работать с базой данных Access 2002 без установки ее на компьютер, используя технологию ODBC (Open Data Base Connectivity). В приложениях приводятся количественные параметры Access 2002 и связанная с этой СУБД терминология.Предлагаемая книга будет полезна специалистам, занимающимся практической разработкой банков данных и приложений на их основе, а также студентам вузов, изучающим информатику.

Павел Юрьевич Дубнов

Программирование, программы, базы данных / ОС и Сети / Книги по IT