[Résolu] SED : insérer saut de ligne lorsque le premier caractère chan

SED : insérer saut de ligne lorsque le premier caractère chan [Résolu] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 03-01-2007 à 17:02:18    

J'aimerais utiliser sed pour insérer un saut de ligne lorsque le premier caractère change. Exemple :

bonjour
bebe
zebre
zorro
hello
vitesse
salut
sirop
sucre
voiture
velo

doit devenir :

bonjour
bebe
 
zebre
zorro
 
hello
 
vitesse
 
salut
sirop
sucre
 
voiture
velo

Pourquoi sed me direz-vous ? Parce que c'est pour insérer dans un sed-script assez long, et déjà écrit. J'attends vos réponses.


Message édité par e-miel le 15-01-2007 à 16:18:03
Reply

Marsh Posté le 03-01-2007 à 17:02:18   

Reply

Marsh Posté le 03-01-2007 à 17:15:36    

Sans sed :

l1="zz";echo "bonjour
bebe
zebre
zorro
hello
vitesse
salut
sirop
sucre
voiture
velo"|while read word; do l2=`echo $word|cut -b1`; if [ "$l1" != "$l2" ]; then echo "\n"; fi; echo $word; l1=$l2; done

Reply

Marsh Posté le 03-01-2007 à 18:57:50    

Le Shell Script que propose ph75 (présenté avec indentation) :

while
    read word
do
    l2=`echo $word|cut -b1`
    if [ "$l1" != "$l2" ] ; then echo "\n" ; fi
    echo $word
    l1=$l2
done

Le Shell Script que je propose :

while
    read -n1 L2
    read
do
    [ "$L1" != "$L2" ]  &&  echo
    echo "$L2$REPLY"
    L1=$L2
done

Seulement, ce n'est pas un Sed Script, merci quand-même !
Une autre proposition ?

Reply

Marsh Posté le 04-01-2007 à 16:22:09    

Une autre proposition ?

Reply

Marsh Posté le 15-01-2007 à 16:14:37    

J'ai trouvé ceci :

H
x
/\(.\)\n\1/!i
g
s/\(.\).*/\1/
x

Pas terrible !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed