grep multiligne
Hello, Je cherche a récupérer toutes les lignes située entre un motif de départ et un motif de fin. Un petit exemple sera plus parlant: [...] ENUM SyncENUM { Entrance = 0, Exit = 1, Undefined = -1, DoNotChange = -2 }; [...] Dans cet exemple, je voudrais récupérer tout ce qui se trouve entre ENUM et }; Je ne m'en sort pas avec l'utilisation de grep, mais peut-être que ce n'est pas la bonne méthode? Est-ce que grep peut travailler en multiligne ??? Toutes les idées sont les bienvenues :) Florian -- http://www-internal.alphanet.ch/linux-leman/ avant de poser une question. Ouais, pour se désabonner aussi.
Re: grep multiligne
On Thursday 28 March 2002 09:34, Salamin Florian wrote: Hello, Je cherche a récupérer toutes les lignes située entre un motif de départ et un motif de fin. Un petit exemple sera plus parlant: Entre autre : sed -n '/ENUM/,/};/p' myfile Ou encore jette un coup d'oeil a csplit(1) Daniel -- http://www-internal.alphanet.ch/linux-leman/ avant de poser une question. Ouais, pour se désabonner aussi.
Re: grep multiligne
Salamin Florian a écrit : Dans cet exemple, je voudrais récupérer tout ce qui se trouve entre ENUM et }; Une méthode que j'envisagerais est d'utiliser awk, en précisant que le record séparator est le caractère }: [pierre@station0]$ cat programme.ak BEGIN { RS=} } { if ($0 ~ ENUM){ print $0 } } [pierre@station0 pierre]$ awk -f programme.ak fichier [...] ENUM SyncENUM { Entrance = 0, Exit = 1, Undefined = -1, DoNotChange = -2 Peut-être faudra-t-il encore améliorer un peu le programme pour éliminer les éléments non désirés... Pierre Maitre -- Dr Pierre-O. Maitre Privat Docent FMH Anesthésiologie FMH Pharmacologie Clinique Cabinet médical / A la Joy CH-1273 Genolier Switzerland -- http://www-internal.alphanet.ch/linux-leman/ avant de poser une question. Ouais, pour se désabonner aussi.
Re: grep multiligne
[...] ENUM SyncENUM { Entrance = 0, Exit = 1, Undefined = -1, DoNotChange = -2 }; [...] Dans cet exemple, je voudrais récupérer tout ce qui se trouve entre ENUM et }; La solution de David me parait plus propre, mais pour répondre à ta question, oui grep est capable de faire du multiligne exemple : cat $FILE | grep -e $STRING1 -e $STRING2 -e $STRING3 mais sed est meilleur dans le cas que tu soulèves. Sinon, il reste toujours le bon vieux awk :) ++ JC http://linux.saitis.net Linux Forum Suisse-Romand -- http://www-internal.alphanet.ch/linux-leman/ avant de poser une question. Ouais, pour se désabonner aussi.