|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre confirmé
![]() Étudiant Inscription : septembre 2006 Messages : 427 ![]() |
Salut à tous
le contenu du fichier fichier.txt : 20|25 12|62 19|22 Pourquoi ces codes ne marchent pas ? Code :
cat fichier.txt | awk -F"|" '{print $0"|"$1+$2}' > fichier.txt Code :
cat fichier.txt | awk -F"|" '{print $0"|"$1+$2}' | cat>fichier.txt les deux écrasent le contenu du de fichier.txt et ceci devient vide.. Merci d'avance.. |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : mars 2002 Messages : 946 ![]() |
Il faut que tu passes par un fichier temporaire.
Lors d'un pipe, les commandes sont exécutées en parallèle. Tu demandes donc de lire et d'écrire sur le même fichier. En pratique, lorsque tu utilises une simple redirection, le fichier est écrasé et ouvert en écriture. Or là, tu cherches à le lire en même temps. D'où le problème. Par ailleurs, il n'est pas utile d'utiliser cat ici : awk est capable de lire le fichier tout seul, s'il est en argument. |
|
|
00
|
|
|
#3 |
|
Membre confirmé
![]() Étudiant Inscription : septembre 2006 Messages : 427 ![]() |
Merci pour la réponse LLB
ça marche bien avec un fichier temporaire : Code :
awk -F"|" '{print $0"|"$1+$2}' fichier.txt > fichier_tmp ; cat fichier_tmp > fichier ; rm fichier_tmp
|
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Inscription : mars 2002 Messages : 946 ![]() |
Tu préfères pas utiliser mv ?
|
|
|
00
|
|
|
#5 |
|
Membre confirmé
![]() Étudiant Inscription : septembre 2006 Messages : 427 ![]() |
oui c'est faisable aussi..
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com