Прочтите о регулярных выражениях (\(
\)) в приложении 1 или справочном руководстве по ed(1). Используйте программу grep для поиска палиндромов — слов, читающихся одинаково с конца и начала. Подсказка: составьте свой шаблон для слов каждой длины.Алгоритм программы grep
4.2 Другие фильтры
Здесь мы представим вам набор небольших системных фильтров, покажем их возможности и дадим несколько примеров использования. Список этих фильтров далеко не полон — существует еще множество фильтров, входящих в седьмую версию, и, конечно, каждая работающая система имеет свои специфические фильтры. Все стандартные фильтры описаны в разд. 1 справочного руководства по UNIX.
Рассмотрим сначала программу sort
sort пытается удовлетворить всех, предоставляя множество различных флагов. Например, флаг -f устраняет различие между прописными и строчными буквами, флаг -d (словарный порядок) игнорирует при сравнении все символы, кроме букв, цифр и пробелов.Способ сравнения в алфавитном порядке является наиболее распространенным, но иногда требуется произвести сравнение в числовом порядке, флаг -n
-r изменяет смысл на противоположный любого условия. Итак, имеем$ ls | sort -f
$ ls -s | sort -n
$ ls -s | sort -nr
Программа sort
+m показывает, что при сравнении пропускается m полей, а +0 обозначает начало строки, например:$ ls -l | sort +3nr
размеров
$ who | sort +4nr
возрастания размеров файлов
Еще одним полезным флагом программы является -о
-u, который удаляет все, за исключением одной из строк, совпадающих в сортируемых полях. Можно использовать несколько флагов, как показано в примере на странице sort(1) справочного руководства:$ sort +0f +0 -u filenames
здесь флаг +0f
+0, который сортирует одинаковые строки после первой сортировки в обычном порядке ASCII. Наконец, флаг -u выбрасывает все, кроме одной из соседних повторяющихся строк. Таким образом, получив список слов по одному в строке, команда выдает неповторяющиеся слова. Указатель для этой книги был подготовлен с помощью сходной команды sort, обладающей еще большими возможностями (см. руководство по sort(1)).Создание команды uniq
-u в команде sort: флаг отбрасывает все строки, кроме одной, из группы соседних повторяющихся строк. Выведение отдельной программы для этой операции позволяет выполнять ее независимо от сортировки. Например, uniq удалит повторяющиеся пустые строки, независимо от того, сортируется входной поток или нет. Флаги предусматривают специальные способы обработки повторяющихся строк: uniq -d печатает только повторяющиеся строки, uniq -u — только уникальные, т.е. неповторяющиеся строки; uniq -c подсчитывает число вхождений каждой строки, в чем вскоре вы убедитесь на примере.Программа comm
f1 и f2, она выдает выходной поток в три столбца: строки, встречающиеся только в f1, строки, встречающиеся только в f2, и строки, встречающиеся в обоих файлах. С помощью флага можно убрать любой из этих столбцов:$ comm -12 f1 f2
выдает только строки, содержащиеся в обоих файлах, а
$ comm -23 f1 f2
выдает строки, которые есть только в первом, но не во втором файле. Это удобно для сравнения каталогов и списка слов со словарем.