Range pattern matching avec SED

Range pattern matching avec SED - Shell/Batch - Programmation

Marsh Posté le 05-10-2005 à 15:40:51    

Je voudrais recuperer une portion de texte avec SED : le debut commence avec la balise <FS> en tete de pragraphe et la fin avec <FS> en fin de paragraphe (mais sur 2 lignes au minimum).
 
Je procede normalement de la sorte :

Code :
  1. $sed -n '/^<FS>/,/<FS>$/p' toto


 
Ca marche bien mais maintenant je veux affiner le controle en supprimant de la selection les lignes commencant par <FS> et se terminant par <FS>. Comment puis je faire avec des expressions regulieres pour "matcher" une ligne debutant avec <FS> mais ne se terminant pas par <FS> ?


---------------
http://phantom99.cjb.net
Reply

Marsh Posté le 05-10-2005 à 15:40:51   

Reply

Marsh Posté le 05-10-2005 à 20:03:04    

Passe de SED à AWK, il est prévu pour les traitements complexes ... alors que le premier est vite limité pour faire autre chose que du matching.


---------------
Institutions européennes: Ensemble d'outils dont le but est de transformer une grande quantité d'argent en merde. Cette merde est utilisée pour créer de nouveaux fonctionnaires. L'argent restant payant des externes pour faire leur travail.
Reply

Marsh Posté le 05-10-2005 à 21:00:09    

je sais j'y ai pensé (et même déjà fait un script) mais j'ai un problème avec awk qui ne gère pas les lignes de plus de 1024 caractères sur AIX (version 5.1)...


---------------
http://phantom99.cjb.net
Reply

Marsh Posté le 05-10-2005 à 21:54:27    

Tu as essayé GNU Awk ?


---------------
Institutions européennes: Ensemble d'outils dont le but est de transformer une grande quantité d'argent en merde. Cette merde est utilisée pour créer de nouveaux fonctionnaires. L'argent restant payant des externes pour faire leur travail.
Reply

Marsh Posté le 05-10-2005 à 22:54:24    

il est malheureusement pas installé...
et je ne suis pas l'admin de la machine en question :(


---------------
http://phantom99.cjb.net
Reply

Marsh Posté le 05-10-2005 à 23:09:07    

Je ne sais pas si c'est comme ça sous AIX, mais sous Solaris awk connait la même limitation, on n'a pas gawk non plus, par contre on a nawk, qui lui n'est pas limité.
 
Sinon je ne sais pas... à la grande limite regarde si tu as PERL. Ou demande l'installation de gawk, c'est standard maintenant.  
Sinon ça va être bouts de scotch et morceaux de ficelle :/

Reply

Marsh Posté le 06-10-2005 à 01:40:18    

awk et nawk sous AIX, c'est le même binaire...
c'est corrigé avec la version 5.3 mais si je pouvais j'aurai upgrade l'OS depuis longtemps :)
 
en PERL c'est faisable mais c'est un peu trop "gros" pour ce que je veux faire...
je pense que y a moyen avec une bonne regexp de faire ce que je veux mais je suis pas expert, genre :
 

Code :
  1. $sed -n '/^<FS>[^ ]*[^<][^F][^S][^>]$/,/<FS>$/p' toto


 
mais ça a pas l'air de marcher (au niveau de la non sélection des lignes terminées par <FS> )


---------------
http://phantom99.cjb.net
Reply

Marsh Posté le 06-10-2005 à 05:03:04    

Tu peux utiliser perl de cette manière :
perl -e 's/regexp1/regexp2/' toto
 
en mettant les bonnes regexp.


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed