Voici le dossier que je dois traiter.
ENR1;203023;0000;H606626;001505;EL;00;1234;0000100;00;00;201346100;H6022418;
ENR6;000218;130155;000;00;201443;000000000;000000000;000000000;000000000;
ENR1;203357;0000;H606626;001653;EL;01;2546;0000800;00;00;201346100;H6022418;
ENR6;000218;130155;000;00;201503;000000000;000000000;000000000;000000000;
ENR6;001811;150316;000;00;201624;000000000;000000000;000000000;000000000;
ENR1;203385;0000;H606625;000615;EL;00;5861;0000100;00;00;201346100;H6022418;
Je dois substituer le champ 7 de chaque ligne. Si la valeur est 00
, alors je dois le définir sur 01
. Mais seulement pour les lignes dont le premier champ estENR1!
awk -F';' -v OFS=';' 'NR>=1{sub("00","01",$7)}1' file > result
Ceci fonctionne mais remplace également le champ $ 7 par des lignes commençant par ENR6.
Comment ajouter la condition (uniquement les lignes commençant par ENR1?)
awk -F';' -vOFS=";" '/ENR1/{$7="01"}1' filename
Approche courte sed :
Le résultat:
^(ENR1;([^;]+;){5})00;
- capture les lignes commençant parENR1
suivi de 5 champs([^;]+;){5}
et du 7ème champ00;
la source