Jai un fichier comme celui-ci:
2018.01.02;1.5;comment 1 2018.01.04;2.75;comment 2 2018.01.07;5.25;comment 4 2018.01.09;1.25;comment 7
Je souhaite remplacer tous les points . dans la deuxième colonne par une virgule , comme je le ferais par sed "s/\./\,/g" file comment puis-je utiliser sed ou de préférence awk pour ne lappliquer quà la deuxième colonne, donc ma sortie ressemble à ceci:
2018.01.02;1,5;comment 1 2018.01.04;2,75;comment 2 2018.01.07;5,25;comment 4 2018.01.09;1,25;comment 7
Réponse
$ awk "BEGIN{FS=OFS=";"} {gsub(/\./, ",", $2)} 1" ip.txt 2018.01.02;1,5;comment 1 2018.01.04;2,75;comment 2 2018.01.07;5,25;comment 4 2018.01.09;1,25;comment 7
-
BEGIN{}ce bloc de code sera exécuté avant de traiter une ligne dentrée -
FS=OFS=";"définir le séparateur de champ dentrée et de sortie comme; -
gsub(/\./, ",", $2)pour chaque ligne dentrée, remplacer tous les.dans le 2ème champ avec, -
1est un idiome awk à imprimer cont ents de$0(qui contient lenregistrement dentrée)
Réponse
sed "s/\./,/3" file
remplace la troisième occurrence du point
Réponse
Fait par ci-dessous la méthode utilisant awk
Commande: awk -F ";" "{gsub(/\./,",",$2);print $1";"$2";"$3}" filename
sortie
2018.01.02;1,5;comment 1 2018.01.04;2,75;comment 2 2018.01.07;5,25;comment 4 2018.01.09;1,25;comment 7