Comment supprimer des lignes d'un fichier

Résolu
stephbret56 Messages postés 195 Statut Membre -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

J’aimerai à partir de la commande sed supprimer des lignes avec les caractères AAAAAAAAAAAAAAAAAAAAAAAA la suppression ne doit ce faire qu'à partir de la 3ème ligne du fichier et jusqu'à la fin.
Le fcichier avant modif:

AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA

123456789
123456789
DGFDFGFGR
FDSFGSGGF
DSDSFFDFF

AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA

123456789
123456789
DGFDFGFGR
FDSFGSGGF
DSDSFFDFF

AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA

123456789
123456789
DGFDFGFGR
FDSFGSGGF
DSDSFFDFF

Le fichier après modif:

AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA

123456789
123456789
DGFDFGFGR
FDSFGSGGF
DSDSFFDFF

123456789
123456789
DGFDFGFGR
FDSFGSGGF
DSDSFFDFF

123456789
123456789
DGFDFGFGR
FDSFGSGGF
DSDSFFDFF

Merci pour votre aide
Configuration: AIX unix

16 réponses

  1. (Pabix) Messages postés 600 Statut Membre 81
     
    sed -e '3,/AAAAAAAAAAAAAAAAAAAAAAAA /d'
    0
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Essaie plutôt :
    sed '3,$ {/^AA*/d}' fichier
    ;-))
    0
    1. (Pabix) Messages postés 600 Statut Membre 81
       
      c’est vrai que c’est plus propre :)
      0
      1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > (Pabix) Messages postés 600 Statut Membre
         
        Et que ça marche surtout ;-))
        [tmpfs]$ cat fichier
        AAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAA
        
        123456789
        123456789
        DGFDFGFGR
        FDSFGSGGF
        DSDSFFDFF
        
        AAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAA
        
        123456789
        123456789
        DGFDFGFGR
        FDSFGSGGF
        DSDSFFDFF
        
        AAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAA
        
        123456789
        123456789
        DGFDFGFGR
        FDSFGSGGF
        DSDSFFDFF
        
        [tmpfs]$ sed -e '3,/AAAAAAAAAAAAAAAAAAAAAAAA /d' fichier
        AAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAA
        
        [tmpfs]$ sed '3,$ {/^AA*/d}' fichier
        AAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAA
        
        123456789
        123456789
        DGFDFGFGR
        FDSFGSGGF
        DSDSFFDFF
        
        
        123456789
        123456789
        DGFDFGFGR
        FDSFGSGGF
        DSDSFFDFF
        
        
        123456789
        123456789
        DGFDFGFGR
        FDSFGSGGF
        DSDSFFDFF
        
        [tmpfs]$  
        ;-))
        0
  3. bob031 Messages postés 8228 Statut Membre 473
     
    salut,

    en plus compact :

    [
    redfox@mandriva Desktop]$ cat prog.sed
    /^$/d
    
    [redfox@mandriva Desktop]$
    
    [redfox@mandriva Desktop]$ sed -f prog.sed sedfile > sedfile2 | sed '3,$ {/^AA*/d}' sedfile2
    AAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAA
    123456789
    123456789
    DGFDFGFGR
    FDSFGSGGF
    DSDSFFDFF
    123456789
    123456789
    DGFDFGFGR
    FDSFGSGGF
    DSDSFFDFF
    123456789
    123456789
    DGFDFGFGR
    FDSFGSGGF
    DSDSFFDFF
    [redfox@mandriva Desktop]$ 
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      ;-))

      Mais en plus compact y'a :
      sed '3,$ {/^AA*\|^$/d}' fichier
      ;-))
      0
  4. bob031 Messages postés 8228 Statut Membre 473
     
    merch'i bien ! :-)))
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. bob031 Messages postés 8228 Statut Membre 473
     
    plus court ?

    [redfox@mandriva Desktop]$ cat prog.sed
    /^$/d
    3,$ {/^AA*/d}
    
    [redfox@mandriva Desktop]$
    [redfox@mandriva Desktop]$ sed -f prog.sed sedfile
    AAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAA
    123456789
    123456789
    DGFDFGFGR
    FDSFGSGGF
    DSDSFFDFF
    123456789
    123456789
    DGFDFGFGR
    FDSFGSGGF
    DSDSFFDFF
    123456789
    123456789
    DGFDFGFGR
    FDSFGSGGF
    DSDSFFDFF
    [redfox@mandriva Desktop]$

    0
  7. stephbret56 Messages postés 195 Statut Membre 6
     
    Bonjour à toutes et tous,

    Merci pour vos solutions je vais essayer ce matin je vous tiens au courant.

    Merci encore à toutes et tous
    0
  8. stephbret56 Messages postés 195 Statut Membre 6
     
    Il m'est pas possible de passer la commande sed 3,$ {/^AA*/d} j'ai à chaque fois le message suivant:

    sed : commande incohérente : 3,$ {/^AA*/d}
    0
  9. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Essaye comme ça alors :
    sed '1,3!{/^AA*/d}'
    0
  10. stephbret56 Messages postés 195 Statut Membre 6
     
    Hélas ce n'est pas mieux

    sed '1,3!{/^AA*/d}' fichier
    sed : commande incohérente : 1,3!{/^AA*/d}
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Essaye alors '0,3' sans grande conviction ;-(
      0
  11. stephbret56 Messages postés 195 Statut Membre 6
     
    Non pas plus pas moin aucune commande possible
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Quelle version de sed ? (sed --version ou sed -v)
      0
  12. stephbret56 Messages postés 195 Statut Membre 6
     
    Version 5
    0
  13. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Bon dans un 1er temps essaye ça :
     sed -n '1,3p' fichier
    et si ça t'affiche bien que les 3 premières lignes essaie alors :
    sed -n -e '1,3p' -e '/^AA*/!p' fichier
    0
  14. stephbret56 Messages postés 195 Statut Membre 6
     
    Merci beucoup de l'aide
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Ça a marché ?
      0
  15. stephbret56 Messages postés 195 Statut Membre 6
     
    Oui mais le résultat n'est pas tout à fait celui que j'attends je pense faire autrement

    Je vais modifier toutes les lignes qui correspondent au motif AAAAAAAAAAAAAAA après la ligne 6 jusqu'à la fin de mon fichier par les caractères suivants XXXXXXXXXXXXXXXXXXXXXX puis je vais faire le delete des lignes qui sont égale à XXXXXXXXXXXXXXXX et la ca marche. pas simple mais le résultat est ok.

    Merci encore pout l'aide au faite j'ai laissé un post sur le shutdown tu as répondu merci mais à ta connaissance il n'y a pas de moyen de répéter le sutdown tous les jours à partir de la commande sutdown il me semblait pourtant que la manipe était possible???

    Donc la seule façon de faire est d’utiliser le cron pas d’autre possibilité ???
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Pour le shutdown voir la réponse de Brunomarc, en fait c'est un compromis entre le fait que la commande shutdown possède en effet une option de programmation (heure), mais similaire à la commande "at" c'est à dire programmable qu'une fois donc à initialiser tous les jours dans un fichier lu au démarrage du PC, et la commande cron qui automatise une tâche indéfiniment si l'on veut.

      Honnêtement la seconde solution (cron) me semble quand même la plus appropriée ;-))
      0
  16. stephbret56 Messages postés 195 Statut Membre 6
     
    Oui j’adopte la seconde solution donc je vais adapter par rapport au cron éventuellement tu n'aurais pas un exemple de cron pour automatiser le boot

    Merci beaucoup bonne soirée A+
    0
  17. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Linux - Ordonnancement des taches
    Automatiser des tâches avec init et cron
    0