grep 'word1\|word2' text.txtпошук рядків, що містять word1або word2. Сюди входять рядки, які містять і те, і інше.
grep word1 text.txt | grep word2пошук рядків, що містять word1і word2. Два слова можуть перетинатися (наприклад, foobarмістить fooі ob). Інший спосіб пошуку рядків, що містять обидва слова, але лише без накладення, - це пошук у будь-якому порядку:grep 'word1.*word2\|word2.*word1' text.txt
grep word1 text.txt | grep -v word2шукає рядки, що містять, word1але не містять word2. -vОпція говорить Grep тримати незбіжні лінії і відповідні видалити рядки, а не навпаки. Це дає половину бажаних результатів. Додавши симетричний пошук, ви отримаєте всі рядки, що містять точно одне зі слів.
grep word1 text.txt | grep -v word2
grep word2 text.txt | grep -v word1
Крім того, ви можете починати з рядків, що містять будь-яке слово, і видаляти рядки, що містять обидва слова. З огляду на будівельні блоки вище, це легко, якщо слова не перетинаються.
grep 'word1\|word2' text.txt | grep -v 'word1.*word2\|word2.*word1'