Supprimer des caractères semblables consécutifs

S-Killer -  
zipe31 Messages postés 38797 Statut Contributeur -
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 .


A voir également:

2 réponses

zipe31 Messages postés 38797 Statut Contributeur 6 433
 
Salut,

Qu'as-tu essayé ? Avec quelles commandes ?
0
S-Killer
 
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
zipe31 Messages postés 38797 Statut Contributeur 6 433 > S-Killer
 
Tu 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
S-Killer
 
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
zipe31 Messages postés 38797 Statut Contributeur 6 433 > S-Killer
 
Pour 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
S-Killer
 
Merci vraiment de m'avoir accordé ton temps!!!
0
jisisv Messages postés 3678 Statut Modérateur 934
 
.. et est-ce bien sous Linux ?
0
S-Killer
 
Oui c'est sous linux ubuntu 10
0