Katakanlah saya punya file:
PRO 1
GLN 5.55112e-17
ILE -6.245e-17
THR 5.55112e-17
Saya ingin setiap baris yang memiliki angka tidak sama dengan 1 di kolom kedua untuk mengubahnya menjadi 0 dan menyimpan sisanya.
Jika saya menggunakan if
(yaitu pernyataan kondisional), semuanya OK:
awk '{if($2!=1){print $1,"0"}else{print $0}}' file
PRO 1
GLN 0
ILE 0
THR 0
Tetapi ketika saya menggunakan blok bersyarat, sesuatu yang tidak diinginkan terjadi:
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
Anda dapat melihat apa yang salah.
- Bagaimana cara saya memperbaiki kesalahan ini?
- Mengapa kesalahan ini terjadi?
- Apa perbedaan antara pernyataan bersyarat dan blok bersyarat?
awk '$2!=1?$2=0:"";1' file
.