Forum Programmation.shell script awk

Posté par  .
Étiquettes : aucune
0
21
juin
2005
Bonjour à tous,

Voila, je pense que la meilleure facon de solutionner mon probleme serait d'utiliser un script awk.

Je vous expose le 'probleme' :

J'ai un fichier (input) contenant des lignes comme suis :

/monsite/monpath/monsouspath/monsoussouspath/monfichier
/monsite/monpath/monsouspath/monsoussouspath/
/monsite/monpath/monsouspath/monsoussouspath/unautrefichier
/monsite/monpath/monsouspath/monsoussouspath/encoreunautrefichier
/monsite/monpath/monsouspath/monsoussouspath/
/monsite/monpath/monsouspath/monsoussouspath/
/unautresite/monpath/monsouspath
/unautresite/monpath/monsouspath/unfichier

et je voudrais que mon script awk matche toutes les lignes contenant "/monsite/monpath/monsouspath" et que la ligne ne se termine pas par un "/" (et donc se termine par un nom de fichier) et que ce soit dirigé vers un autre fichier output.

Je sais qu'on pourrais le faire en shell, awk, perl etc etc ... d'après vous quelle serait la meilleure solution sachant que le fichier input peut contenir environ 5000 lignes.

Merci à tous de votre aide :-)
  • # grep

    Posté par  (site web personnel) . Évalué à 5.

    pourquoi pas un simple

    grep "^/monsite/monpath/monsouspath/.*[^/]$" fichier_input > resultat

    ?
    • [^] # Re: grep

      Posté par  . Évalué à 1.

      Euh oui en effet, pourquoi me compliquer la tâche à faire un script à part qui fera le travail d'un simple grep !!!

      Merci Nis de m'avoir ouvert les yeux sur la manière la plus simple pour faire ce traitement ... encore un peu j'allais écrire une classe java lool bon ok -> []

      Encore merci à toi
  • # Awk

    Posté par  . Évalué à 1.

    En même temps, le awk est à peine plus compliqué :

    awk '/^\/monsite\/monpath\/monsouspath\/.*[^/]+$/{print $0}' fichierInput > fichierOutput
    • [^] # bug

      Posté par  . Évalué à 1.

      pff pas possible d'écrire une ligne sans bug... faut pas mettre de "+" bien sûr !

      je recommence (I ricommence)


      awk '/^\/monsite\/monpath\/monsouspath\/.*[^/]$/{print $0}' fichierInput > fichierOutput
      • [^] # Re: bug

        Posté par  . Évalué à 1.

        De fait c'est pas beaucoup plus compliqué que la solution avec grep ... je ne suis pas familier avec les regexp ... c'est sans doutes pour cela que j'avais pas pensé à la solution grep ;-)

        Merci pour ta ligne de code ... ca peut toujours servir ! un grand merci à toi :-)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.