Modifier 1 champ via transco dans un fichier via script unix

Résolu
JsuisNul Messages postés 122 Date d'inscription mercredi 13 février 2013 Statut Membre Dernière intervention 14 février 2024 - 18 janv. 2024 à 17:31
 JsuisNul - 25 janv. 2024 à 22:46

Bonjour,

Je souhaiterai modifier via un script shell un champ via une transcodification dans un fichier entier composé de différente ligne  qui se compose comme suit (sans séparateur les points étant des espace) :

Fichier A

0000000001..........AAAA..........88888aaauuppppp
0000000001..........BBBB..........qqqqqq7589a
0000000001..........CCCC..........XXXX0000555544447777  
0000000002..........AAAA..........884569aaauuppppp
0000000002..........BBBB..........qfrdqqdd7589a
0000000002..........CCCC..........YYYY000066633337777 

je souhaiterai remplacer les XXXX par la valeur OOOO et les YYYY par MMMM uniquement sur les lignes avec les CCC.

Je précise que les XXXX et YYYY sont toujours à la même position.

Merci d'avance pour votre aide

  • J. 
A voir également:

4 réponses

Bonjour,

Désolé de ne pas avoir fait de retour plus tôt. 

Merci à dubcekpour sa réponse que j'ai pu tester aujourd'hui. cela fonctionne. je ferme la discussion.

Merci.

1
dubcek Messages postés 18753 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 7 novembre 2024 5 619
19 janv. 2024 à 10:32

hello

il faut remplacer XXX ou 4 cars.. quelconques ?

$ awk '/CCCC/ {sub("XXXX", "OOOO"); sub("YYYY", "MMMM")}; {print}' fichier
0000000001..........AAAA..........88888aaauuppppp
0000000001..........BBBB..........qqqqqq7589a
0000000001..........CCCC..........OOOO0000555544447777  
0000000002..........AAAA..........884569aaauuppppp
0000000002..........BBBB..........qfrdqqdd7589a
0000000002..........CCCC..........MMMM00006663333777
0
JsuisNul Messages postés 122 Date d'inscription mercredi 13 février 2013 Statut Membre Dernière intervention 14 février 2024 1
19 janv. 2024 à 10:53

Hello dubcek,

Oui le but est de changer la valeur XXXX toujours par la valeur OOOO et si c'est la valeur YYYY alors par la valeur MMMM.

Par contre, est-il possible de préciser la position du champ à modifier pour éviter que si la valeur se trouve ailleurs sur la même ligne que celle-ci ne soit pas changé ?  

Merci à toi    

0
dubcek Messages postés 18753 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 7 novembre 2024 5 619
19 janv. 2024 à 11:32

ne modifie que le champ  3

$ awk -F "[.]{10}" '$2 ~ /CCCC/ {sub("XXXX", "OOOO", $3); sub("YYYY", "MMMM", $3)}; {OFS=".........."; print}' fichier
0000000001..........AAAA..........88888aaauuppppp
0000000001..........BBBB..........qqqqqq7589a
0000000001..........CCCC..........OOOO0000555544447777  
0000000002..........AAAA..........884569aaauuppppp
0000000002..........BBBB..........qfrdqqdd7589a
0000000002..........CCCC..........MMMM00006663333777
0
mamiemando Messages postés 33341 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 7 novembre 2024 7 803
Modifié le 25 janv. 2024 à 19:15

@JsuisNul StatutMembre

Est-ce que la réponse de dubcek répond à ton problème ?

0