Delete de lignes sous VI

Résolu
Bonjour,

Je recherche la commande qui me permettra de supprimer toutes les lignes qui correspondent au motif suivants

Motif AAAAAAAXXXXXXXXX

J'ai essayé avec la commande suivante: /AAAAAAAXXXXXXXXX/d
Elle me retire qu'une ligne du fichier
J'ai essayé avec 1,$/AAAAAAAXXXXXXXXX/d Ne marche pas

Exemple de fichier :

1111111111113333333333444444444444
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
RRRRRRRRRRRRRRRRRRRRRRRRRRRR
AAAAAAAXXXXXXXXX

222222222222222222222222222222222
DDDDDDFFFFFFFFFFFFFFFFFFFFf
FFFFFFFFFFGGGGGGGGGGGGGGGGGGGGG
GHHHHHHHHHHHHHHHHHHHHHHHH
AAAAAAAXXXXXXXXX

UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUfffffff
mmmmmmmmmmmmmmmmmmmmmmmtttttttt
pppppppppppppppppppppppppppppp
AAAAAAAXXXXXXXXX

Merci
Configuration: Unix AIX

10 réponses

  1. Petite précision la syntaxe 1,/AAAAAAAXXXXXXXXX/' fonctionne bien sous vi mais pas en batch
    1. Je voudrais copier dans un fichier la ligne 1 jusqu'au 1er motif AAAAAAAXXXXXXXXX j'ai essayé avec la syntaxe suivante mais ca ne marche pas

      cat mon_fichier|sed -e '1,/AAAAAAAXXXXXXXXX' >mon_nouveau_fichier

      comment faire??
      1. Bon en effectuant une nouvelle tentative je constate qu'il ne faut pas mettre le g ou le 1,$ g dans le script mais uniquement la syntaxe suivante

        sed -e "/AAAAAAAXXXXXXXXX/d"

        et la miracle toutes les lignes du motif disparaisse
        1. Modérateur
          Il ne faut pas confondre l'éditeur "vi" et la commande "sed" (éditeur orienté lignes) :
          sed -i.bak '/AAAAAAAXXXXXXXXX/d' fichier
          sed -i.old '5,$ /AAAAAAAXXXXXXXXX/d'  fichier
          ;-))
          1. Slt,

            J'ai un soucis avec la commande g/AAAAAAAXXXXXXXXX/d ou 5,$ g/AAAAAAAXXXXXXXXX/d elle ne passe pas en batch
            y a t-il une option pour la commande

            ci-joint la commande batch:
            cat mon_fichier|sed -e "g/AAAAAAAXXXXXXXXX/d" >mon_nouveau_fichier

            ou

            cat mon_fichier|sed -e "1,$ g/AAAAAAAXXXXXXXXX/d" >mon_nouveau_fichier

            idem pour les deux le message est sed : commande incoherente : 1,$ g/AAAAAAAXXXXXXXXX/d
            1. Ok merci ça marche

              Merci pour l'aide et bon week-end
              1. Modérateur
                De rien, bon week-end à toi aussi ;-))
            2. Slt

              Merci
              Mais si on veut uniquement à partir de la ligne 5 jusqu'à la fin donc on ne garde que le premier motif?
              1. Modérateur
                :5,$ g/AAAAAAAXXXXXXXXX/d