То, что вы хотите, можно сделать только с awk
, но не с sed
или одним grep
.
$ cat regexes
c
b
a
Первая совпадающая строка должна быть сохранена для каждого шаблона (, за исключением тех, у которых приоритет ниже, чем у самого высокого -ранжированного совпадения):
echo $'b\nc\nd' |
awk 'BEGIN { while (getline regex <"regexes") regexes[i++]=regex; num=i; limit=i; };'\
'{ for(i=0;i<limit;i++) { if($0~regexes[i]) { regexmatch[i]=$0; limit=i; if (i==0) { exit; } else break; }; }; };'\
'END { for(i=0;i<num;i++) if (regexmatch[i]!="") { print regexmatch[i]; exit; }; }'
c