Командная строка Linux. Полное руководство (Шоттс) - страница 42

>[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