Поиск и обработка текста
grep, конвейеры и фильтры: превращаем текстовый вывод в полезный результат.
Поиск строк
grep отбирает строки по шаблону. С ключом -n он показывает номера строк. Ключ -F воспринимает шаблон как обычный текст, а не регулярное выражение. Регистр учитывается, если не добавить -i.
printf "linux\nnetwork\nlinux tools\n" | grep -nF linuxКонвейер
Символ | передаёт стандартный вывод левой программы на стандартный ввод правой. Ошибки по умолчанию идут отдельным потоком и не попадают в обычный конвейер.
sort сортирует строки, uniq объединяет соседние одинаковые строки, а -c считает повторы. Поэтому перед uniq часто ставят sort.
printf "bash\nlinux\nbash\n" | sort | uniq -cПодсчёт и проверка
wc -l считает символы перевода строки, а не всегда количество видимых записей: последняя строка без перевода влияет на результат. Разбирайте сложный конвейер по одному шагу, проверяя промежуточный вывод.
printf "one\ntwo\n" | wc -lЗакрепляем на практике
Выведите три строки: cat, dog, cat. Получите количество повторов каждого слова.
Подсказка и проверка
printf "cat\ndog\ncat\n" | sort | uniq -c должен показать 2 для cat и 1 для dog.