modification d'une ligne dans un fichier - Shell/Batch - Programmation
Marsh Posté le 05-05-2006 à 14:01:29
Donc t'as récupéré le n° de ligne (imaginons que ce soit "12" ) =>
awk -vlig=12 '{printf("%s", $0); if (NR == lig) printf("le mot en plus" ); printf("\n" )}' le_fichier_en_question > nouveau_fichier |
Marsh Posté le 05-05-2006 à 14:10:03
et y a pas possibilité de faire ça directement ? (je veux sans passer par un fichier "temporaire"?)
Est-ce que cette commande recopie tout le reste du fichier?
Merci
Marsh Posté le 05-05-2006 à 15:08:05
est-il possible de procéder de la meme façon si on veut supprimer juste un mot dans une ligne?
Marsh Posté le 05-05-2006 à 16:34:42
bonjour à tous,
encore une question
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.
est-ce normal?
Marsh Posté le 05-05-2006 à 17:37:07
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 |
ironhead36t a écrit : Est-ce que cette commande recopie tout le reste du fichier? |
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 |
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
Et télécharger ce bouquin: http://fr.lang.free.fr/cours/Shell_v1.4.pdf
Marsh Posté le 09-05-2006 à 15:42:12
merci pour votre aide a tous.
je vais aller jeter un coup d'oeil sur ce pdf.
Marsh Posté le 05-05-2006 à 13:40:54
Bonjour à tous,
Je suis en train d'écrire un script en shell, et à l'aide de ce script je souhaiterais modifier 1 ligne précise dans un fichier.
J'ai déjà récupéré le numéro de la ligne à modifier à l'aide d'un awk, puis d'un grep, maintenant je ne sais pas comment je pourrais modifier cette lignet
(en fait il ne s'agit que d'ajouter un mot à la fin de la ligne).
Sauriez-vous comment faire?
Merci d'avance pour votre aide
Julian