#1 Le 23/06/2020, à 12:07
- kevino_linux
Remplacer sélectivement valeur dans une colonne
Bonjour à tous,
J'ai un fichier avec +400.000 lignes de 27 colonnes chacune, représenté comme tel :
252.858306 1052.392741 0.093979 0.093979 000001@Extract/job065/Movies/20190221_1125_A017_G000_H374_D001.mrcs MotionCorr/job003/Movies/20190221_1125_A017_G000_H374_D001.mrc 1 4.687843 0.112025 7942.572266 7465.865723 15.252215 0.000000 1.000000 30.369515
J'aimerai remplacer la colonne 7 (le 1 en gras ci dessus) par un "2", et ce, sur toutes les lignes. Je ne maîtrise pas totalement Awk, j'imagine qu'il faut passer par ça mais je bloque.
Merci à celui / celle qui voudra bien m'aider.
Bonne journée
Hors ligne
#2 Le 23/06/2020, à 12:36
- pingouinux
Re : Remplacer sélectivement valeur dans une colonne
Bonjour,
Si tu veux remplacer la colonne 7 par 2 :
awk '{$7=2;print}' fichier
Si tu veux ajouter 1 à la colonne 7 :
awk '{$7+=1;print}' fichier
Hors ligne
#3 Le 23/06/2020, à 12:39
- kevino_linux
Re : Remplacer sélectivement valeur dans une colonne
Merci infiniment c'est exactement ce qu'il me fallait !!
Dernière modification par kevino_linux (Le 23/06/2020, à 12:40)
Hors ligne
#4 Le 23/06/2020, à 12:39
- sputnick
Re : Remplacer sélectivement valeur dans une colonne
Avec awk:
awk '{$7=2;print}' fichier | tee new_fichier
Ensuite si c'est ok:
mv new_fichier fichier
Il existe un tunnel obscur dans la lumière infinie. Lao-Tseu
https://sputnick.fr
Hors ligne
#5 Le 23/06/2020, à 12:41
- MicP
Re : Remplacer sélectivement valeur dans une colonne
Bonjour
Pour remplacer tout le contenu du septième champ de chaque ligne du fichier nomFichier par le chiffre 2 :
awk '{$7=2;print}' nomFichier
Pour remplacer, dans le contenu du septième champ de chaque ligne du fichier nomFichier, chaque chiffre 1 par le chiffre 2 :
awk '{gsub(1,2,$7);print}' nomFichier
Là, ça ne fait qu'afficher le fichier modifié à l'écran,
mais si tu veux que que le remplacement soit fait dans le fichier,
alors rajoute à la fin de la ligne de commande
| tee nomFichier
Dernière modification par MicP (Le 23/06/2020, à 14:47)
Hors ligne
#6 Le 23/06/2020, à 12:54
- pingouinux
Re : Remplacer sélectivement valeur dans une colonne
@MicP #6 :
Attention, ta première commande efface le fichier d'origine.
Hors ligne
#7 Le 23/06/2020, à 13:00
- MicP
Re : Remplacer sélectivement valeur dans une colonne
…Attention, ta première commande efface le fichier d'origine.
Oui, c'était le but (EDIT : je n'avais pas bien compris, je pensais juste remplacer l'original, mais ça ne fonctionne pas),
mais je me disais aussi qu'il valait mieux le faire d'abord afficher à l'écran,
alors j'ai modifié mon message
Dernière modification par MicP (Le 24/06/2020, à 10:56)
Hors ligne
#8 Le 23/06/2020, à 13:11
- kamaris
Re : Remplacer sélectivement valeur dans une colonne
Houlà ! Mauvaise idée !
commande fichier | tee fichier
lit et écrit en parallèle dans fichier…
Il faut passer par un fichier temporaire :
commande fichier >fichier.tmp && mv fichier.tmp fichier
Hors ligne
#9 Le 23/06/2020, à 14:46
- MicP
Re : Remplacer sélectivement valeur dans une colonne
Houlà ! Mauvaise idée !
Oui, effectivement : ça vide le fichier de son contenu => fichier à zéro octet.
Je supprime cette suggestion dans mon précédent message.
Hors ligne
#10 Le 24/06/2020, à 10:53
- kevino_linux
Re : Remplacer sélectivement valeur dans une colonne
Merci à tous pour vos réponses rapides et concises
Hors ligne