grep tous les caractères, y compris le saut de ligne
Je suis à l'analyse d'un fichier XML avec
"lalala it's a Sunday {{ Some words here, maybe
a new line }} oh boy"
Comment puis-je utiliser grep pour obtenir le tout dans "{{" et "}}, " étant donné que la commande grep .
personnage ne reconnaît pas les retours à la ligne?
Actuellement, j'ai
grep '{{.*}}'
mais il ne fonctionne que sur des choses qui sont sur la même ligne.
OriginalL'auteur Rio | 2011-02-20
Vous devez vous connecter pour publier un commentaire.
Une option est de supprimer le saut de ligne puis grep, comme dans:
Mais si vous dites que c'est un fichier XML, pourquoi ne pas utiliser un analyseur XML qui tire parti de la structure plutôt que de simplement regexp?
MODIFIER
Grep regexp êtes gourmands, vous pouvez utiliser perl:
Cela devrait sortie d'un match par ligne. Si vous avez imbriqué {{ alors ce sera encore plus compliqué.
OriginalL'auteur Jesse Cohen
Vous pouvez utiliser l'alternance entre mutuellement exclusifs jeux de caractères pour correspondre vraiment à n'importe quel caractère. Par exemple, cette commande:
...va correspondre à quoi que ce soit (avidement) entre la première
{{
et dernier}}
.Mais comme @JesseCohen unis, vous vraiment, vraiment, vraiment devrait être l'analyse de XML avec un analyseur XML, pas les expressions régulières.
<text xml:space="preserve">
). Je pense donc que l'analyse XML est un peu moins pertinente ici.Wow, je n'ai que ça (le wikipedia de vidage de la chose). Vous trouverez peut-être un peu plus compliqué il me semble (à moins que j'ai fait).
De plus, je pense que l'utilisation d'un parseur XML pour charger tous les fichiers à la fois, et que Wiki de vidage est ÉNORME.
Pas si c'est un streaming analyseur SAX, par exemple nokogiri.org/Nokogiri/XML/SAX.html
OriginalL'auteur Phrogz
C'est la façon dont j'ai résolu le problème
\s
et\S
sont PCRE extensions, pas disponible en standard grep.OriginalL'auteur Yuri Barbashov
Cela a fonctionné pour moi:
OriginalL'auteur Peter K