Angenommen, ich habe eine Datei:
PRO 1
GLN 5.55112e-17
ILE -6.245e-17
THR 5.55112e-17
Ich möchte, dass jede Zeile mit einer Zahl ungleich 1 in der zweiten Spalte in 0 geändert wird und der Rest beibehalten wird.
Wenn ich eine if
bedingte Anweisung verwende, ist alles in Ordnung:
awk '{if($2!=1){print $1,"0"}else{print $0}}' file
PRO 1
GLN 0
ILE 0
THR 0
Aber wenn ich den bedingten Block verwende, passiert etwas Unerwünschtes:
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
Sie können sehen, was los ist.
- Wie behebe ich diesen Fehler?
- Warum tritt dieser Fehler auf?
- Was ist der Unterschied zwischen einer bedingten Anweisung und einem bedingten Block?
awk '$2!=1?$2=0:"";1' file
.