说我有一个文件:
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
。