Manipulation d'un fichier avec un script

Résolu
Bonjour,

Tout d'abord mes meilleurs voeux pour cette nouvelle année !!

J'ai problème avec un fichier qui a été généré avec des erreurs et que je ne peux pas régénérer.
Le nombre de ligne impacté étant assez important on m'a conseillé de le faire via un script.
Problème c'est que je n'y connais pas grand chose, pire qu'une débutante...donc si une âme charitable veut bien m'aider...

mon fichier se structure de cette façon :

AAA1;BBBB1;CCCCC1;DDDD;EEEE1;666
AAA2;BBBB2;CCCCC2;DDDD;EEEE2;111
AAA3;BBBB3;CCCCC3;DDDD;EEEE3;666
AAA4;BBBB4;CCCCC4;DDDD;EEEE4;111
AAA5;BBBB5;CCCCC5;DDDD;EEEE5;666

Je souhaiterai faire deux choses :
1- Pouvoir effacer le champ DDDD pour tous ceux dont la ligne se termine par "111"
2- Remplacer le "111" par des "666"

Afin d'obtenir le résultat suivant :

AAA1;BBBB1;CCCCC1;DDDD;EEEE1;666
AAA2;BBBB2;CCCCC2;;EEEE2;666
AAA3;BBBB3;CCCCC3;DDDD;EEEE3;666
AAA4;BBBB4;CCCCC4;;EEEE4;666
AAA5;BBBB5;CCCCC5;DDDD;EEEE5;666

Merci à tous ceux qui voudront bien m'aider.

Juju

2 réponses

  1. salut,

    Demander de l'aide pour vos exercices

    les manipulations sur ce type de structure de fichier (CSV) se font de manière privilégiée avec
    awk
    .
    on peut bien sûr le faire en shell, mais l'exécution est moins rapide.
    0
    1. Merci pour votre réponse.

      Je suis très flattée que vous me preniez encore pour une jeune étudiante :-)
      Et j'espère ne pas avoir enfreint les règles régies par ce forum d'entre-aide.

      Cependant il ne s'agit pas d'un exercice d'étudiant mais d'une aide pour résoudre un problème le plus rapidement à mon travail. En effet, c'est moi qui est fait une erreur ce qui a généré le fichier comme dans l'exemple et j'aimerai pouvoir résoudre le problème pour éviter de me faire taper sur les doigts... les modifications étant très longue si je devais le faire manuellement, c'est pour cela que je fais appel à votre aide.

      J'ai essayé de regarder par moi-même mais la syntaxe est complexe ou la moindre cote ou virgule mal placée fait que ça ne marche pas...
      J'ai vu en effet les fonctions awk ou même sed mais la syntaxe et les options à utiliser sont compliquées à comprendre en si peu de temps...

      Juju
      0
  2. hello
    $ awk 'BEGIN {FS=OFS=";"} /111$/ {$4=""; $NF="666"} {print}' fichier
    AAA1;BBBB1;CCCCC1;DDDD;EEEE1;666
    AAA2;BBBB2;CCCCC2;;EEEE2;666
    AAA3;BBBB3;CCCCC3;DDDD;EEEE3;666
    AAA4;BBBB4;CCCCC4;;EEEE4;666
    AAA5;BBBB5;CCCCC5;DDDD;EEEE5;666
    0
    1. Bonjour dubcek,

      Super !!! ça fonctionne parfaitement, tu m'enlèves une sacré épine du pied !!!

      Merci à tous ;-)

      Juju
      0

Discussions similaires

question pix mot caché

7 réponses