>[me@linuxbox ~]$ ls /bin /usr/bin | sort | uniq | less
В этом примере мы использовали uniq для удаления любых повторяющихся строк в выводе команды sort. Если бы нам потребовалось, наоборот, получить список дубликатов, мы добавили бы в команду uniq параметр -d:
>[me@linuxbox ~]$ ls /bin /usr/bin | sort | uniq -d | less
wc — вывод числа строк, слов и байтов
Команда wc (word count — счетчик слов) используется для подсчета числа строк, слов и байтов в файлах. Например:
>[me@linuxbox ~]$ wc ls-output.txt
>7902 64566 503634 ls-output.txt
В данном случае команда вывела три числа: число строк, число слов и число байтов в файле ls-output.txt. Подобно предыдущим командам, она может вызываться без аргументов, и в этом случае wc будет принимать данные со стандартного ввода. Параметр -l ограничивает вывод результатов только числом строк. Команду удобно использовать в конвейерах для подсчета: например, подсчитать число элементов в нашем сортированном списке можно так:
>[me@linuxbox ~]$ ls /bin /usr/bin | sort | uniq | wc -l
>2728
grep — поиск строк, соответствующих шаблону
grep — очень мощная программа, она часто используется для поиска в файлах текста по шаблону:
>grep шаблон [файл...]
Когда grep находит в файле совпадение с «шаблоном», она выводит строку с найденным совпадением. Шаблоны, используемые командой grep для поиска, могут быть очень сложными, но сейчас мы рассмотрим только поиск прямого совпадения с текстом. Более сложные шаблоны, которые называют регулярными выражениями, мы рассмотрим в главе 19.
Допустим, что нам нужно найти все файлы в списке программ, которые имеют в своем имени последовательность символов zip. Результаты такого поиска могут подсказать нам, какие программы в системе имеют отношение к сжатию файлов.
Сделать это можно так:
>[me@linuxbox ~]$ ls /bin /usr/bin | sort | uniq | grep zip
>bunzip2
>bzip2
>gunzip
>gzip
>unzip
>zip
>zipcloak
>zipgrep
>zipinfo
>zipnote
>zipsplit
Команда grep имеет пару удобных параметров: -i требует от grep игнорировать регистр символов в процессе поиска (обычно поиск выполняется с учетом регистра символов), -v требует от grep выводить только строки, где совпадение с шаблоном не найдено.
head/tail — вывод первых/последних строк из файлов
Иногда требуется выводить не все результаты работы команды, а только несколько первых или несколько последних строк. Команда head выводит первые 10 строк из файла, а tail — последние 10 строк. По умолчанию обе команды выводят 10 строк текста, но это число можно изменить с помощью параметра -n:
>[me@linuxbox ~]$ head -n 5 ls-output.txt