Программирование в стандарте POSIX


Использование регулярных выражений - часть 15


tr -s '[:upper:]' '[:lower:]'

Листинг 6.37. Пример трансляции и сжатия последовательностей символов с использованием служебной программы tr.

Служебная программа uniq

uniq [-c | -d | -u] [-f число] [-s число] [входной_файл [выходной_файл]]

позволяет сократить до одной подряд идущие одинаковые строки (сделать одинаковые строки файла смежными можно с помощью утилиты sort). Опции предоставляют дополнительный сервис.

-c

Перед каждой выходной строкой помещать ее кратность во входном файле.

-d

Подавить вывод неповторяющихся строк.

-f число

При сравнении строк игнорировать заданное число начальных полей. Поле определяется как максимальная цепочка символов, успешно сопоставляемая с базовым регулярным выражением   [[:blank:]]*[^[:blank:]]*.

-s число

При сравнении строк игнорировать заданное число начальных символов. При совместном использовании опций -f и -c игнорируется указанное число символов, идущих после заданного числа полей.

-u

Подавить вывод строк, повторявшихся во входном файле.

В качестве примера употребления утилиты uniq приведем конвейер, позволяющий найти десять самых употребительных заголовочных файлов среди включаемых в стандартные заголовочные файлы, расположенные в каталоге   /usr/include и его подкаталогах (см. пример 6.38). Результат работы конвейера может выглядеть так, как показано в пример 6.39.

find /usr/include -name '*.h' -exec cat {} \; | tr -d '[:blank:]' | \ grep -E -e '^#include(<.*>|".*")' | sort | uniq -dc | sort -r | head

Листинг 6.38. Пример использования служебной программы uniq.

977 #include"nsISupports.h" 315 #include<glib.h> 201 #include<gdk/gdk.h> 167 #include<glibmm.h> 160 #include<features.h> 154 #include<glib-object.h> 144 #include"nsCOMPtr.h" 139 #include<sys/types.h> 139 #include<glibmm/class.h> 135 #include"nscore.h"

Листинг 6.39. Возможный результат работы конвейера, показанного в листинге 6.38.




Начало  Назад  Вперед



Книжный магазин