Disons que j'ai un fichier:
PRO 1
GLN 5.55112e-17
ILE -6.245e-17
THR 5.55112e-17
Je veux que chaque ligne qui a un nombre différent de 1 dans la deuxième colonne le change en 0 et garde le reste.
Si j'utilise if
(c'est-à-dire une déclaration conditionnelle), tout va bien:
awk '{if($2!=1){print $1,"0"}else{print $0}}' file
PRO 1
GLN 0
ILE 0
THR 0
Mais lorsque j'utilise le bloc conditionnel, quelque chose de indésirable se produit:
awk '$2!=1 {print $1,"0"} {print $0}' file
PRO 1
GLN 0
GLN 5.55112e-17
ILE 0
ILE -6.245e-17
THR 0
THR 5.55112e-17
Vous pouvez voir ce qui ne va pas.
- Comment puis-je corriger cette erreur?
- Pourquoi cette erreur se produit-elle?
- Quelle est la différence entre une instruction conditionnelle et un bloc conditionnel?
awk '$2!=1?$2=0:"";1' file
.