Скажіть, у мене є файл:
PRO 1
GLN 5.55112e-17
ILE -6.245e-17
THR 5.55112e-17
Я хочу, щоб кожен рядок, який має число, неоднакове до 1, у другому стовпчику міняв його на 0 і зберігав решту.
Якщо я використовую if
(тобто умовне твердження), все гаразд:
awk '{if($2!=1){print $1,"0"}else{print $0}}' file
PRO 1
GLN 0
ILE 0
THR 0
Але коли я використовую умовний блок, трапляється щось небажане:
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
Ви можете бачити, що не так.
- Як виправити цю помилку?
- Чому виникає ця помилка?
- Чим відрізняється умовний вислів від умовного блоку?
awk '$2!=1?$2=0:"";1' file
.