Использование grep для печати одной из перечисленных строк, но для печати их всех, если существует более одной

У меня есть три строки, которые я ищу в файле. Чтобы найти строки с любой из них, я использую

grep ‘string1|string2|string3’ file

Я хочу распечатать только совпадающие строки в каждой строке, используя флаг -o. Но в этом случае, если в строке присутствуют две строки, появляется только одна из них. Есть ли способ получить что-то вроде string1 и/или string2 и т. д. без необходимости перечислять 6 случаев с и и или с использованием этот ответ.

Обратите внимание, что я использую OS X Yosemite.

Ожидаемый результат:

string1 string1 string2 string3 string1 string3 string3

и Т. Д.

Можете ли вы включить образец входных данных и ожидаемый результат?   —  person sodiumnitrate    schedule 12.04.2015

@hwnd печатает только одну из этих строк, если в строке существует более одной.   —  person sodiumnitrate    schedule 12.04.2015

@anubhava отредактировал сообщение.   —  person sodiumnitrate    schedule 12.04.2015

Если ваш grep имеет опцию -n для отображения совпадающих номеров строк: используйте -n -o и пост-обработайте вывод grep с помощью awk. Я не специалист по awk.   —  person sodiumnitrate    schedule 12.04.2015

Источник: ledsshop.ru

Стиль жизни - Здоровье!