[Bash] Restreindre sed ou awk à une colonne d'un fichier csv

Restreindre sed ou awk à une colonne d'un fichier csv [Bash] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 21-06-2016 à 16:54:56    

:hello:  
 
J'ai le fichier .csv suivant:

Code :
  1. 05/17/2016 15:37:47,102,11801
  2. 05/21/2016 13:45:53,79,116554
  3. 05/21/2016 22:03:26,3,9926911


 
Le second champ est un code numérique, j'aimerais remplacer sa valeur (via sed ou awk) par quelque chose de plus lisible ex:

Code :
  1. 05/17/2016 15:37:47,GOOGLE,11801
  2. 05/21/2016 13:45:53,MICROSOFT,116554


 
Pour celà, je cherche à resteindre l'exécution de SED ou d'AWK à cette seule colonne. J'avais pensé faire çà avec cut mais çà ne marche pas comme prévu.
 
Je suis tombé sur ce topic où quelqu'un cherchait à faire la même chose.
Malheureusement, je n'ai pas réussi à adapté le code proposé par un contributeur à mon cas:
 

Code :
  1. awk -F@ '$3 ~ /pattern/ { OFS= "@"; $3 = "replace"; }'


 
J'ai remplacé les "@" par des virgules vu que ce sont mon séparateur de champs à moi, et les "$3" par des "$2" vu que c'est la colonne qui m'intéresse à moi... sans succés jusque là.
 
Si vous pouviez y jeter un coup d'oeil, merci d'avance !


---------------
Mon feedback
Reply

Marsh Posté le 21-06-2016 à 16:54:56   

Reply

Marsh Posté le 21-06-2016 à 18:30:19    

Une approche différente :

Code :
  1. cat test.txt
  2. 05/17/2016 15:37:47,102,11801
  3. 05/21/2016 13:45:53,79,116554
  4. 05/21/2016 22:03:26,3,9926911


Code :
  1. while read ligne; do echo "${ligne}"|awk -F',' '{print $2}'; done < test.txt
  2. 102
  3. 79
  4. 3


Ça te permet d’isoler les nombres que tu veux. Ensuite, tu peux faire ton remplacement.


---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
Reply

Marsh Posté le 21-06-2016 à 19:29:04    

Merci pour ta réponse, mais celà ne revient-il pas au même qu'un cat test.txt | cut -d"," -f2 dans le sens où je peux visualiser les données de ce champ mais pas les éditer ?


---------------
Mon feedback
Reply

Marsh Posté le 21-06-2016 à 19:32:38    

Morpheus86 a écrit :

Merci pour ta réponse, mais celà ne revient-il pas au même qu'un cat test.txt | cut -d"," -f2 dans le sens où je peux visualiser les données de ce champ mais pas les éditer ?


Il me semble que oui.
Mais tu peux tester aussi :o


---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
Reply

Marsh Posté le 22-06-2016 à 19:54:20    

tiens je l'avais pas vu celui-là.
 
c'est le 5ème forum sur lequel tu postes ce sujet.  :pt1cable:

Reply

Marsh Posté le 04-10-2016 à 18:06:30    

Avec 4 mois de retard :o

 

La commande gawk permet d'enregistrer les modifications dans le fichier d'entrée avec l'option -i inplace (à la manière d'un sed -i) :

Code :
  1. gawk -i inplace  -F"," '{ OFS="," ; gsub("102","GOOGLE",$2); gsub("78","MICROSOFT",$2);print}' test.txt


Message édité par rapha3L le 04-10-2016 à 18:07:12
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed