Manipulation d'un fichier avec un script

Résolu/Fermé
Julie_ette Messages postés 3 Date d'inscription mercredi 9 janvier 2019 Statut Membre Dernière intervention 10 janvier 2019 - 9 janv. 2019 à 18:26
Julie_ette Messages postés 3 Date d'inscription mercredi 9 janvier 2019 Statut Membre Dernière intervention 10 janvier 2019 - 10 janv. 2019 à 14:17
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
A voir également:

2 réponses

lEprofSonDkon Messages postés 211 Date d'inscription jeudi 13 décembre 2018 Statut Membre Dernière intervention 8 octobre 2022 13
Modifié le 9 janv. 2019 à 18:38
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
Julie_ette Messages postés 3 Date d'inscription mercredi 9 janvier 2019 Statut Membre Dernière intervention 10 janvier 2019
10 janv. 2019 à 10:41
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
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
10 janv. 2019 à 11:01
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
Julie_ette Messages postés 3 Date d'inscription mercredi 9 janvier 2019 Statut Membre Dernière intervention 10 janvier 2019
10 janv. 2019 à 14:17
Bonjour dubcek,

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

Merci à tous ;-)

Juju
0