grep предназначен для продвинутого поиска текста. Мы будем искать в файлах и потоках данных. Давайте скачаем несколько книжек:
https://linux.cttit.ru/files/books/the_lion_the_witch_and_the_wardrob.txt
https://linux.cttit.ru/files/books/aliceas_adventures_in_wonderland.txt
https://linux.cttit.ru/files/books/treasure_island.txt
Помните, как это делается? (Если не помните, при помощи wget)
Попробуем найти слово (далее «вхождение») «sea» в каждом файле поочереди:
grep "sea" aliceas_adventures_in_wonderland.txt grep "sea" the_lion_the_witch_and_the_wardrob.txt grep "sea" treasure_island.txt
Обратите внимание, что мы в тексте находим не просто искомое вхождение, а всю строку, где встречается это вхождение.
А если нужно найти все вхождения вне зависимости от регистра букв (sea, SEA, SeA и проч.)?
Для этого применим ключ «-i»:
grep -i "sea" treasure_island.txt
А если в двух файлах?
grep "sea" treasure_island.txt aliceas_adventures_in_wonderland.txt
А если во всех?
grep "sea" *
А если во всех текстовых (txt)?
Изучите справку «grep», ответьте на вопрос: Как производить поиск текста не только в текущем каталоге, но и подкаталогах?
Поиск текста в потоке данных.
Команда ls /etc/ выдаст нам большой список файлов. Попробуем в этом списке отыскать вхождение «sys», подключив конвеером команду grep:
ls /etc/ | grep sys
Теперь вернёмся к ранее скачанным файлам. Прочтём содержимое файла «the_lion_the_witch_and_the_wardrob.txt» и найдём в нём вхождения «Narnia»:
cat the_lion_the_witch_and_the_wardrob.txt | grep "Narnia"