Script : inserer un mot dans un fichier

Résolu/Fermé
SAKDOSS - 24 juin 2009 à 16:44
 SAKDOSS - 25 juin 2009 à 09:37
Bonjour tout le monde,

Je cherche une commande unix (ou une série de commandes) qui me permette d'insérer un mot dans un fichier de la forme suivante :

"
Alex
--------
Bidule
--------
Machin
--------
Truc
"

Le but étant de garder l'ordre alphabétique.
Par exemple, si j'ajoute "Hector" le résultat devrait être :

"
Alex
--------
Bidule
--------
Hector
--------
Machin
--------
Truc
"

Une petite idée ?
A voir également:

1 réponse

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
24 juin 2009 à 17:52
Salut,

Rajouter l'opton "-i" à la commande "sed" (dans la partie if ... then ... else ... fi) pour une modification du fichier original.
[tmpfs]$ cat script.sh
#! /bin/sh

# Usage : script.sh param1 param2
#       : param1 = Nom à rajouter
#       : param2 = Nom du fichier

#set -xv

cible=$(sed '/^--*$/d;$a\
'"$1"'
' $2 | sort | sed  "1,/$1/d;q")

if [ "$cible" != "" ]
then
sed '/'"$cible"'/i\
'"$1"'\
--------
' $2
else
sed '$ i\
--------\
'"$1"'
' $2
fi

[tmpfs]$ cat plop
"
Alex
--------
Bidule
--------
Machin
--------
Truc
"

[tmpfs]$ ./script.sh Hector plop
"
Alex
--------
Bidule
--------
Hector
--------
Machin
--------
Truc
"
[tmpfs]$ ./script.sh Simon plop
"
Alex
--------
Bidule
--------
Machin
--------
Simon
--------
Truc
"

[tmpfs]$ ./script.sh Ursule plop
"
Alex
--------
Bidule
--------
Machin
--------
Truc
--------
Ursule
"

[tmpfs]$
;-))
0
Merci bien ;)
0