J'essaye de faire une analyse de chaîne assez simple dans le script bash. Fondamentalement, j'ai un fichier qui est composé de plusieurs champs multi-ligne. Chaque champ est entouré d'un en-tête et d'un pied de page connus.Plusieurs expressions regex multi-lignes dans Bash
Je veux extraire séparément chaque champ dans un tableau ou similaire, comme celui-ci
>FILE=`cat file`
>REGEX="@#@#@#[\s\S][email protected]#@#@"
>
>if [[$FILE =~ $REGEX ]] then
> echo $BASH_REMATCH
>fi
DOSSIER:
@#@#@#################################
this is field one
@#@#@#
@#@#@#################################
this is field two
they can be any number of lines
@#@#@#
Maintenant, je suis assez sûr que le problème est que bash ne correspond pas à newlines avec le "."
Je peux faire correspondre cela avec "pcregrep -M", mais bien sûr le fichier entier va correspondre. Puis-je obtenir un match à la fois de pcregrep?
Je ne suis pas opposé à l'utilisation de Perl inline ou similaire.
Merci à l'avance
Modifié cela un peu pour faire ce que je veux. Awk est quelque chose que je n'ai jamais appris. Merci! – prestomation