2016-02-17 1 views
0

J'ai un fichier avec, disons, les lignes suivantes:Bash - comment ajouter une nouvelle ligne après des lignes commençant par la même lettre?

alibi 
all 
bone 
chair 
clever 
cup 
curse 
dog 
donut 

Je veux ajouter une nouvelle ligne après le dernier mot qui commence par la même lettre; c'est-à-dire, je veux que la sortie soit:

alibi 
all 

bone 

chair 
clever 
cup 
curse 

dog 
donut 

Y at-il un moyen de le faire? Je ne suis pas un expert donc je ne sais même pas par où commencer pour celui-ci. Je préfère que ce soit un one-liner, aussi. Je travaille dans l'environnement Windows Cygwin.

Répondre

0

Lire le fichier ligne par ligne, se souvenir du premier caractère du mot, comparer avec le premier caractère du suivant.

#!/bin/bash 

prev='' 
while read word ; do 
    char=${word:0:1} 
    if [[ $prev && $prev != $char ]] ; then 
     echo 
    fi 
    prev=$char 
    echo "$word" 
done < input-file 
+0

Merci de votre aide, mais je pense que j'ai trouvé une solution plus courte! – LinuxBlanket