Supprimer des caractères semblables consécutifs

Bonjour,
je n'arrive pas à trouver comment supprimer deux caractères semblables successifs sur une ligne et comment compter le nombre de lignes vides et non vides dans un fichier .

2 réponses

  1. Contributeur
    Salut,

    Qu'as-tu essayé ? Avec quelles commandes ?
    0
    1. J'ai essayé avec awk pour compter le nombre de lignes mais le problème que je rencontre est qu'apparemment, le contenu de la variable que j'utilise pour l'incrémentation se vide à chaque fois que awk passe à la ligne suivante. voici ce que j'ai essayé
      awk -v vid=0 -v nonv=0 'BEGIN {if($0="") {vid++} else {nonv++}} END {print vid nonv}' passwd
      où nonv: représente le nombre de lignes non vides à la sortie et
      vid: le nombre de lignes vides.
      0
    2. Contributeur
      @S-KillerTu t'embêtes pour rien ;-\

      Voilà un fichier de 9 lignes avec 6 lignes contenant du texte et 3 lignes vides.
      $ cat plop 
      ligne 1

      ligne 3
      ligne 4
      ligne 5

      ligne 7

      ligne 9

      $ grep -c '.' plop
      6

      $ grep -c '^$' plop
      3
      0
    3. Donc le programme que j'ai posté tout à l'heure ne marche pas?
      pour la suppression des caractères successifs voilà ce que j'ai essayé
      sed -e ".{,2}d" mon_fichier
      0
    4. Contributeur
      @S-KillerPour awk, il te faut l'écrire comme ça :
      awk -v vid=0 -v nonv=0 '{if($0=="") vid++ ;else nonv++ ;} END {print "vide = " vid, "non vide = " nonv}' 


      Pour sed, ce n'est pas bon, par ce que là tu supprimes la ligne entière ;-(
      Après il faut savoir s'il faut tenir compte du fait qu'il n'y ait qu'un seul caractère répété ou s'il peut il y en avoir plusieurs à la suite ? Un exemple :
      $ echo "a b c dd effg hhiiijj" | sed 's/\(.\)\1*/\1/g'
      a b c d efg hij
      0
    5. Merci vraiment de m'avoir accordé ton temps!!!
      0
  2. Modérateur
    .. et est-ce bien sous Linux ?
    0
    1. Oui c'est sous linux ubuntu 10
      0