J'ai des chaînes de canalistes qui sont dans le sens de: où je veux que mon grep émet tout le début de "enzyme" à la fin de la deuxième double citation, quelle que soit la valeur ou la quantité de ce qui se situe entre les deux doubles citations (peut être de 1 à 20 enzymes et je ne connais pas leurs valeurs). Les enzymes sont toujours majuscules alpha, mais si plus d'une, il y a toujours un espace entre les deux. P> J'ai essayé: p> , mais Aucun de ces éléments ne rien retourner. Je serais reconnaissant pour toutes les idées d'obtenir ce que je veux. Merci! P> p>
4 Réponses :
Ceci est en train de vérifier Utilisation de avec Enzyme: code> suivi de zéro ou plusieurs espaces blancs suivis de
" code> jusqu'à la prochaine
" code> est vu.
-E code> drapeau: p>
-p code> drapeau: p>
grep -o 'Enzyme: ?"[^"]+"' Match Enzyme: literally, followed by an optional space, a literal double quote, anything that's not a double quote, and a literal double quote.
Grep génère toujours tout le match, qui inclut l'enzyme d'Ankers: "" et "" " Pour faire correspondre les ankers, mais omettez-les dans la sortie, vous devez utiliser un lookeDeHind postif avec le préfixe et un lookahead positive avec le postfix de votre sortie souhaitée: P>
Pour tester:
Cela dit, je trouve qu'il est beaucoup plus facile d'utiliser SED dans ce cas:
grep -oe "(? <= enzyme: \") (. *) (? = \ ")" code> p> p> P>
Echo 'Enzyme: "ENZ3 ENZ6 ENZ12 ENZ19"' | grep -op "(? <= Enzyme: \") (. *) (? = \ ")" code> p> p>
Echo 'Enzyme: "ENZ3 ENZ6 ENZ12 ENZ19"' | Sed -r "s / enzyme: \" (. *) \ "/ \ 1 / g" code> p>
s / trouvaille / remplacer / code> est la commande de recherche et de remplacement de SED P>
Selon mon MANPAGE -P, n'est que expérimental avec -z. En dehors de cela, vous êtes correct, je modifierai la réponse
D'autre part sans que les accolades ont besoin d'échapper à qui, à mon avis, rend l'expression surtout illisible
Pour ce faire avec Grep, vous auriez besoin de GNU Grep pour sinon, en utilisant n'importe quel SED dans n'importe quelle coquille sur chaque boîte Unix: < / p> -o code>:
Pourquoi utiliser des guillemets doubles en citations doubles? Utilisez des singles comme extérieur. Le 1er n'a pas besoin de parens. Les 2e et 3ème match ne correspondent que d'un seul caractère et non d'espaces ... Le 4ème est un globe globale et non une regex à moins que vous ne veux pas correspondre à des chaînes de guillemets ...