Modification d'une seule ligne ds un fichier
mike
-
Mike -
Mike -
Bonjour,
j'aimerais savoir comment faire pour ajouter un mot différent en début et en fin d'une ligne précise dans un fichier.
Exemple de fichier :
Un deux trois
Quatre cinq six
Sept huit neuf
je voudrais remplacer par exemple Un par One en tête de la premiére ligne et ajouter sur cette même ligne FIN à la fin de cette ligne.
Aprés traitement on obtiendrait ainsi :
One deux trois FIN
Quatre cinq six
Sept huit neuf
j'ai essayer en utilisant une syntaxe du style :
cat fichier.txt | while read ligne
do
sed -e 's/Un/one' < fichier.txt
sed -e 's/.*/one & fin' < fichier.txt
done
Le soucis dans cette commande c'est que le fichier est entiérement traité.....
Auriez vous une solution ?
Merci
j'aimerais savoir comment faire pour ajouter un mot différent en début et en fin d'une ligne précise dans un fichier.
Exemple de fichier :
Un deux trois
Quatre cinq six
Sept huit neuf
je voudrais remplacer par exemple Un par One en tête de la premiére ligne et ajouter sur cette même ligne FIN à la fin de cette ligne.
Aprés traitement on obtiendrait ainsi :
One deux trois FIN
Quatre cinq six
Sept huit neuf
j'ai essayer en utilisant une syntaxe du style :
cat fichier.txt | while read ligne
do
sed -e 's/Un/one' < fichier.txt
sed -e 's/.*/one & fin' < fichier.txt
done
Le soucis dans cette commande c'est que le fichier est entiérement traité.....
Auriez vous une solution ?
Merci
A voir également:
- Modification d'une seule ligne ds un fichier
- Fichier bin - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier rar - Guide
- Suivi de modification word - Guide
7 réponses
Voici ce que tu peux faire
fichier de départ
J'ai decoupé en 2 sed pour voir lequel fait quoi
Le premier sed remplace l''*' en debut de ligne par etoile1, et le suivant remplace le '*' en fin de ligne par etoile2
C'était ce que tu cherchais ?
fichier de départ
Nibbler:~ KuK$ cat blabla Un Deux trois *quatre cinque six sept* *deux trois six* deux un cinq
J'ai decoupé en 2 sed pour voir lequel fait quoi
Nibbler:~ KuK$ cat blabla | sed -e 's/^*/etoile1 /g' | sed -e 's/*$/ etoile2/g' Un Deux trois etoile1 quatre cinque six sept etoile2 etoile1 deux trois six etoile2 deux un cinq
Le premier sed remplace l''*' en debut de ligne par etoile1, et le suivant remplace le '*' en fin de ligne par etoile2
C'était ce que tu cherchais ?
Bonsoir,
merci de votre réponse.
Mon fichier d'exmple présente un défaut.
en effet il faut également que lorsque j'ai :
Un Deux trois
*quatre cinque six sept*
*deux trois six*
deux un * cinq trois qutre * cinq
je dois obtenir :
Un Deux trois
etoile1 quatre cinque six sept etoile1
etoile1 deux trois six etoile1
deux un etoile1 cinq trois qutre etoile1 cinq
merci
merci de votre réponse.
Mon fichier d'exmple présente un défaut.
en effet il faut également que lorsque j'ai :
Un Deux trois
*quatre cinque six sept*
*deux trois six*
deux un * cinq trois qutre * cinq
je dois obtenir :
Un Deux trois
etoile1 quatre cinque six sept etoile1
etoile1 deux trois six etoile1
deux un etoile1 cinq trois qutre etoile1 cinq
merci
et lorsque j'ai
*quatre cinque six sept*
*deux trois six*
*deux un cinq.
*deux trois.
un deux trois * cinq *
un deux trois *cinq six
sept huit * neuf
je dois obtenir :
etoile1 quatre cinque six sept etoile1
etoile1 deux trois six etoile2
*deux un cinq.
*deux trois.
un deux trois etoile1 cinq etoile2
un deux trois etoile1 cinq six
sept huit etoile2 neuf
voilà....
merci
*quatre cinque six sept*
*deux trois six*
*deux un cinq.
*deux trois.
un deux trois * cinq *
un deux trois *cinq six
sept huit * neuf
je dois obtenir :
etoile1 quatre cinque six sept etoile1
etoile1 deux trois six etoile2
*deux un cinq.
*deux trois.
un deux trois etoile1 cinq etoile2
un deux trois etoile1 cinq six
sept huit etoile2 neuf
voilà....
merci
Dans ce cas
C'est le cas le plus simple car il suffit de remplacer * par etoile1
Chez moi j'ai ceci
PS : CaYmal de nous faire faire des devoirs ^_^
cat TONFICHIER | sed -e 's/*/etoile1/g'va suffire ... non ?
C'est le cas le plus simple car il suffit de remplacer * par etoile1
Chez moi j'ai ceci
Nibbler:~ KuK$ cat blabla2 Un Deux trois *quatre cinque six sept* *deux trois six* deux un * cinq trois qutre * cinq Nibbler:~ KuK$ cat blabla2 | sed -e 's/*/ etoile1 /g' Un Deux trois etoile1 quatre cinque six sept etoile1 etoile1 deux trois six etoile1 deux un etoile1 cinq trois qutre etoile1 cinqOu alors j'ai raté quelquechose
PS : CaYmal de nous faire faire des devoirs ^_^
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonsoir,
j'ai bien compris cette syntaxe, le pb c'est que lorsque le fichier est comme ceci :
*quatre cinque six sept*
*deux trois six*
*deux un cinq.
*deux trois.
un deux trois * cinq *
un deux trois *cinq six
sept huit * neuf
il faut pas que les étoiles de la ligne 3 et ligne 4 soit modifiés.
etoile1 quatre cinque six sept etoile1
etoile1 deux trois six etoile1
*deux un cinq.
*deux trois.
un deux trois etoile1 cinq etoile2
un deux trois etoile1 cinq six
sept huit etoile2 neuf
on constate que sur ces lignes 3 et lignes 4, à la fin on trouve un point, ne peut on pas jouer sur ça ?
Merci
j'ai bien compris cette syntaxe, le pb c'est que lorsque le fichier est comme ceci :
*quatre cinque six sept*
*deux trois six*
*deux un cinq.
*deux trois.
un deux trois * cinq *
un deux trois *cinq six
sept huit * neuf
il faut pas que les étoiles de la ligne 3 et ligne 4 soit modifiés.
etoile1 quatre cinque six sept etoile1
etoile1 deux trois six etoile1
*deux un cinq.
*deux trois.
un deux trois etoile1 cinq etoile2
un deux trois etoile1 cinq six
sept huit etoile2 neuf
on constate que sur ces lignes 3 et lignes 4, à la fin on trouve un point, ne peut on pas jouer sur ça ?
Merci
[tmpfs]$ cat plop *quatre cinq six sept* *deux trois six* *deux un cinq. *deux trois. un deux trois * cinq * un deux trois * cinq six sept huit * neuf [tmpfs]$ sed ' :b s/*/etoile2/2 Tz s/*/etoile1/ b :z /\.$/b N bb ' plop etoile1quatre cinq six septetoile2 etoile1deux trois sixetoile2 *deux un cinq. *deux trois. un deux trois etoile1 cinq etoile2 un deux trois etoile1 cinq six sept huit etoile2 neuf [tmpfs]$;-))
Ca fonctionne parfaitement.
Par contre j'aurais une question, a quoi sert le " ^ " dans /^UN/ ?
Pouriez vous m'expliquer briévement la syntaxe que je ne comprends pas entierement.
Voir SED - Les expressions régulières
sed '/^T / {s//<title>/;s/.*/&<\/title>/}' fichier.txt > fichier1.txt
En faite, j'aimerais éviter un fichier temporaire.
Merci
sed -i .....
et ca marche....
merci