Отдельные команды Grep не работают при комбинировании в многопользовательской команде grep - PullRequest
0 голосов
/ 01 июля 2019

Мне нужно выполнить несколько совпадений grep как часть одной и той же команды grep. Когда я запускаю их по отдельности, они работают нормально. Но не когда вместе. Я надеюсь, что кто-то может либо показать мне решение, либо, возможно, может помочь мне найти обходной путь. Вот пример потока:

(string start..) RollUp:"V" Enzyme:"ENZA ENZB ENZD ENZE" (..string end) 

В первой команде мне нужно изолировать все подстроки RollUp. Значение всегда A или V:

grep -o "RollUp:\"[AV]\""

Во второй команде мне нужно выделить все комбинации значений фермента (всего 1-20, пробелы между ними, не знаю имен значений). Эта команда работает:

grep -oE 'Enzyme:[[:space:]]*"[^"]+"'

Однако мне нужно сопоставить оба шаблона как часть одного потока. Когда я пытаюсь:

grep -oE "RollUp:\"[AV]\""\|Enzyme:[[:space:]]*"[^"]+""

ничего не возвращается. Я был бы благодарен за любые идеи для того, чтобы заставить это двойное сопоставление образца grep работать. Спасибо!

1 Ответ

0 голосов
/ 01 июля 2019

регулярное выражение someting[^"]+: это означает, что строка something сопровождается чем-либо до следующего ". Здесь знак + означает, по крайней мере, одно или несколько совпадений.

grep -oE 'RollUp:"[^"]+|Enzyme:[[:space:]]*"[^"]+"' file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...