Средства обработки текста Печать
Статьи - Основы UNIX

Средства обработки текста

Текстовые редакторы vi, ee, nano

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

Программы-фильтры

В UNIX существуют программы, получающие данные из стандартного потока ввода (stdin) и выводящие результаты свое работы в стандартный поток вывода (stdout). Общее название таких программ – программы-фильтры (или просто фильтры). Фильтр обычно (но не всегда) умеет также читать данные из файлов, имена которых были переданы ему в качестве аргументов, причем в этом случае чтение из файлов происходит именно в том порядке, в каком имена файлов были указаны в качестве параметров. Совместно с возможностью перенаправления стандартных потоков (stdin, stdout и stderr), использование программ-фильтров предоставляет пользователю большие возможности по обработке информации в командной строке или скриптах.

Фильтр cat

Программа cat является классическим представителем фильтров. То, что прочитано из stdin или из файлов, выводится в stdout. Несмотря на кажущуюся простоту такого действия, использование cat позволяет пользователю быстро и эффективно решать необходимые задачи. Например, если необходимо просмотреть содержимое файла, нет нужды запускать пейджер или, тем более, редактор:

$ cat /etc/fstab
# Device Mountpoint FStype Options Dump Pass#
/dev/ad0s1b none swap sw 0 0
/dev/ad0s1a / ufs rw 1 1
/dev/ad0s1e /tmp ufs rw 2 2
/dev/ad0s1f /usr ufs rw 2 2
/dev/ad0s1d /var ufs rw 2 2
/dev/acd0 /cdrom cd9660 ro,noauto 0 0

Для добавления строки в конец файла file1:

$ cat >> file1
new line

Опции, используемые с командой cat можно увидеть на странице man.

Показать последние строки файла — tail

Программа tail выводит на stdout последние строки файла (без опции n выводится 10 строк):

Последние 5 строк

$ tail -n 5 /var/log/messages

Последние строки, начиная с 10-й

$ tail -n +10 /var/log/messages

Динамически отслеживать запись в файл

$ tail -F /var/log/messages

Показать первые строки файла — head

Программа head выводит на stdout первые строки файла (без опции n выводится 10 строк):

Первые 5 строк

$ head -n 5 /var/log/messages

Выбор фрагментов строк — cut

Программа cut вырезать из входного потока или файла фрагменты строк, соответствующие определенным позициям символов в строке (опция с) или определенным полям (опция f). В последнем случае считается, что файл имеет табличную структуру (т. е. разбит на колонки) и программе требуется указать разделитель полей с с помощью опции d (разделитем по умолчанию является символ табуляции, в этом случае опция d не нужна).

Примеры:

$ cut -d: -f1 /etc/passwd
$ cut -d: -f1,7 /etc/passwd
$ cut -d: -f13 /etc/passwd
$ cut -c1-5 /etc/passwd

Сортировка файлов — sort

Программа sort позволяет сортировать данные в алфавитном или числовом порядке (опция -n). Подробно с опциями sort можно ознакомится на странице справочного руководства.

Пример сортировки пользователей в системе по алфавиту:

$ grep -v '^#' /etc/passwd | sort

Пример сортировки пользователей в системе по значению UID:

$ grep -v '^#' /etc/passwd | sort t: -k3 -n