Modifier 1 champ via transco dans un fichier via script unix
RésoluJsuisNul -
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.
- Modifier 1 champ via transco dans un fichier via script unix
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Modifier dns - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
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.
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
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
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
@JsuisNul StatutMembre
Est-ce que la réponse de dubcek répond à ton problème ?
- Si oui, merci de basculer le sujet en résolu.
- Sinon, merci d'indiquer comment on peut t'aider.