Комбинирование grep
с конвейерами и последовательностями команд
На этом этапе мы рассмотрим, как использовать grep
в сочетании с конвейерами и последовательностями команд для более продвинутой обработки текста.
Начнем с поиска всех строк, содержащих "PATH", в файле .zshrc
и подсчета их количества:
grep "PATH" ~/.zshrc | wc -l
В этом конвейере сначала используется grep
для поиска строк с "PATH", а затем вывод передается в wc -l
для подсчета строк.
Теперь используем последовательность команд для поиска "PATH", а затем "HOME", если "PATH" найден:
grep "PATH" ~/.zshrc && grep "HOME" ~/.zshrc
Это покажет строки, содержащие "HOME", только если были найдены строки, содержащие "PATH".
Попробуем более сложный пример. Мы найдем строки, оканчивающиеся на "bin", в файле /etc/passwd
, отсортируем их и выведем первые 5:
grep "bin" /etc/passwd | sort | head -n 5
Этот конвейер выполняет три действия:
- Находит строки, содержащие "bin".
- Сортирует эти строки в алфавитном порядке.
- Выводит только первые 5 строк результата.
Наконец, объединим все, что мы узнали. Мы найдем строки, содержащие "sh", в файле /etc/passwd
, подсчитаем их количество и, в зависимости от этого количества, либо выведем строки, либо покажем сообщение:
grep "sh" /etc/passwd | wc -l | {
read count
[ $count -gt 5 ] && grep "sh" /etc/passwd || echo "Found $count lines, not enough to display."
}
Эта сложная команда делает следующее:
- Ищет строки, содержащие "sh".
- Подсчитывает эти строки.
- Если количество больше 5, выводит строки.
- Если количество равно 5 или меньше, показывает сообщение с количеством.
Попробуйте запустить эти команды и поэкспериментируйте с собственными комбинациями!