У меня есть три строки, которые я ищу в файле. Чтобы найти строки с любой из них, я использую
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
Источник: