[shell unix] Supprimer une partie du texte

jebok Messages postés 371 Date d'inscription   Statut Membre -  
 Cyril -
Bonjour,

j'ai un fichier de ce type :

/*------------------------*/
entree n°1
blablabla
blablabla
/*------------------------*/

/*------------------------*/
entree n°2
bliblibli
bliblibli
/*------------------------*/

...

Je souhaite supprimer une des entrées du fichier (une entrée = tout ce qui est entre les /*----*/ ) mais consevrer le reste.
Comment m'y prendre à l'aide d'une commande ksh ?
--
Merci de votre aide
Configuration: AIX
ksh

1 réponse

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     
    Avec sed et une expression régulière bien choisie ;-)

    man perlre
    man sed

    Exemple : supprimer ce qui est entre parenthèses dans le fichire plop.c
    $ cat plop.c
    
    #include <stdio.h>
    #include <stdlib.h>
    
    long double x, y;
    
    int main(void)
    {
            printf("Calcul de la moyenne\n");
            printf("Entrez le premier nombre : ");
            scanf("%Lf", &x);
            printf("\nEntrez le deuxieme nombre : ");
            scanf("%Lf", &y);
            printf("\nLa valeur moyenne de %Lf et de %Lf est %Lf. \n", x, y, (x+y)/2);
            return 0;
    }
    
    $ sed s/\(.*\)//g plop.c > plop2.c
    
    #include <stdio.h>
    #include <stdlib.h>
    
    long double x, y;
    
    int main
    {
            printf;
            printf;
            scanf;
            printf;
            scanf;
            printf;
            return 0;
    }
    
    0
    1. jebok Messages postés 371 Date d'inscription   Statut Membre 51
       
      Oui mais je n'arrive pas à lui faire supprimer toutes les lignes qui se trouvent entre :

      /**--------------*/
      et
      /*end**/
      et qui contiennent un certain mot (par exemple AAAAAAAA)

      Comment faire ?
      0
      1. Cyril > jebok Messages postés 371 Date d'inscription   Statut Membre
         
        Je propose la commande sed :

        sed -n '/debutTexteAconserver/ , /finTexteA conserver/p > fichierclean.txt
        0