Скажем, у меня есть файл:
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
.