ironhead36t a écrit :
et y a pas possibilité de faire ça directement ? (je veux sans passer par un fichier "temporaire"?)
|
Si, on peut (on considère qu'on est toujours pour la ligne 12) en passant par "vi"
#!/bin/sh
vi le_fichier_a_traiter <<_EOT_ 1>/dev/null 2>&1
:12
Ale_mot_en_plus
:wq!
_EOT_ |
Le awk ? Ben oui, il affiche chaque ligne, si la ligne porte le n° attendu elle affiche en plus le mot, puis affiche une fin de ligne => tout le fichier (t'as qu'à tester...)
ironhead36t a écrit :
j'ai testé et tout marche très bien, par contre le mot à rajouter est un mot saisi par l'utilisateur, donc à la place de printf("le mot en plus" ) je met printf("%s",mot_saisi ), ou meme printf($mot_saisi ), je n'obtiens aucune modification.
|
Ben oui. Tu remarques pas que je passe à awk une valeur qu'il ne connait pas (la ligne) avec "-v"
#!/bin/sh
echo "Le mot ?"
read mot
echo "La ligne ?"
read lig
awk -vmot_saisi=$mot -vlig=$lig '{printf("%s", $0); if (NR == lig) printf("%s", mot_saisi); printf("\n" )}' le_fichier_en_question > nouveau_fichier mv nouveau_fichier le_fichier_en_question |
ironhead36t a écrit :
est-il possible de procéder de la meme façon si on veut supprimer juste un mot dans une ligne?
|
Avec awk, on peut faire exécuter par des algorithmes tous les traitements que l'on veut sur un fichier. Chaque ligne peut être traitée intégralement, ou mot par mot. Et t'as d'autres commandes qui te permettent aussi d'autres traitements
Tu devrais taper
- man awk
- man grep
- man cut
- man sed
- man tr
- man sort
Et télécharger ce bouquin: http://fr.lang.free.fr/cours/Shell_v1.4.pdf
---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.