У меня есть два файла. a.txt
имеет список регулярных выражений, разделенных символами новой строки. b.txt
есть строки, некоторые из которых соответствуют регулярным выражениям в a.txt
.
Что я хочу: команда (grep, вероятно), которая будет принимать два файла, и для каждой строки в a.txt
печатает первое совпадение всей строки из b.txt
.
Идеальным решением было бы также распечатать само регулярное выражение в качестве префикса и, если совпадений нет, вывести «нет совпадений» или что-то еще отличительное. Однако один из них отсутствует, или оба из них достаточно хороши.
Что я сейчас использую для тестирования решений:
a.txt:
[abc]*qs
ab[cqs]*
w+x+
b.txt:
aqs
abqs
abs
Лучшие вещи, которые я пробовал, это grep -xf a.txt b.txt
, который печатает
aqs
abqs
abs
и grep -xcf a.txt b.txt
который печатает 3
.
Идеальный результат будет
[abc]*qs aqs
ab[cqs]* abqs
w+x+ None
Минимально приемлемый результат будет
aqs
abqs