Forum Programmation.shell Suppression de X carractère d'une ligne

Posté par  .
Étiquettes : aucune
0
31
mai
2006
Bonjour,

J'ai plusieurs fichiers texte avec la liste de tous les fichiers de mes serveurs que j'essaye de mettre au propre la liste afin de faire des stats dans une base de données.
Je suis arrivée a garder que les éléments qui m' interressent mais la je bloque sur une dernière suppression

Voici un exemple de mon fichier :
D:\
04/08/05 10:06 197 amap.log
27/03/06 16:45 5 400 acad.kgb
D:\test
07/11/03 16:59 85 504 travaux.xls

et voici ce que je voudrais obtenir
D:\
197 amap.log
5 400 acad.kgb
D:\test
85 504 travaux.xls

avez vous une solution avec VI pour supprimer la date et l'heure en début de ligne. pour reconnaître la ligne on peu filtrer sur le symbole [/]
Si vous savez comment le faire sans VI je suis partant aussi

Merci d'avance.
  • # En perl

    Posté par  . Évalué à 2.

    [gco@gc]:~% cat pouet
    D:04/08/05 10:06 197 amap.log
    27/03/06 16:45 5 400 acad.kgb
    D:\test
    07/11/03 16:59 85 504 travaux.xls

    [gco@gc]:~% cat pouet|perl -ne 'if(/^.+\d{1,2}:\d{2} (.+)$/) { print "$1\n"; } else {print "$_" };'
    197 amap.log
    5 400 acad.kgb
    D:\test
    85 504 travaux.xls
    [gco@gc]:~%
    • [^] # Re: En perl

      Posté par  . Évalué à 1.

      Ca marche nickel.

      Merci.
      • [^] # Re: En perl

        Posté par  . Évalué à 4.

        pourquoi faire simple quand on peut faire compliqué ...

        version shell
        $ cut -d' ' -f3- < fichier
        • [^] # Re: En perl

          Posté par  . Évalué à 2.

          Parce que rien ne nous assure que le séparateur soit un ' ' (le html bouffe les espaces multiples et autres tab).

          Parce qu'il veut plusieurs champs et non juste le 3eme.

          D'ailleurs:

          [gco@gc]:~% cut -d' ' -f3,4 < pouet 10:43
          197 amap.log
          5 400
          D:\test
          85 504


          Marche po ta solution ...
          • [^] # Re: En perl

            Posté par  . Évalué à 2.

            Euh en fait j'ai zappé le "-f3-".
            Donc ta solution fonctionne dans le cas ou le délimitateur est un espace unique ou un caractère de tabulation.
  • # Avec VI

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

    Avant tout, passer en mode commande ("Esc" puis ":").

    Ensuite, la commande obscure devrait ressembler à la suivante :

    1,$s;^../../.. ..:..;;


    En français, cela donne : pour les lignes de 1 à la dernière, substituer le motif "../../.. ..:.." (deux caractères suivis de / suivis de deux caractères suivis...) par rien.

Suivre le flux des commentaires

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