Помимо ответа great , предложенного choroba , где мы объединили все шаблоны в одном регулярном выражении, у вас есть два других способа сделать это, особенно если у вас есть многие шаблоны, объединяющие их в одном регулярном выражении, не могут быть оптимальным решением.
1) Использовать все шаблоны в командной строке :
grep -e 'Foo:[1-9]\+' -e 'Bar:[1-9]\+' input
Foo:1, Bar:0
Foo:1, Bar:1
Foo:0, Bar:1
Foo:55, Bar:0
(обратите внимание, что вы должны экранировать +
(\+
), поскольку мы используем стандартное регулярное выражение POSIX)
2) Перегруппировать все шаблоны в один файл
$ cat patterns
Foo:[1-9]\+
Bar:[1-9]\+
$ grep -f patterns input
Foo:1, Bar:0
Foo:1, Bar:1
Foo:0, Bar:1
Foo:55, Bar:0
или в конечном итоге
grep -f <(echo 'Foo:[1-9]\+'; echo 'Bar:[1-9]\+') input
если вы не хотите иметь файл.
То же самое замечание по поводу +
: число, начинающееся с 1-9
, уже больше 0
, даже если за ним следует 0
или вообще ничего.