- awk '$2 < "1E-10" {print}' input_file
- awk '$2 < 1E-10 {print}' input_file
- awk '($2+0) < 1E-10 {print}' input_file
- awk '($2+0) < 1E-10 && $2 != "NA" {print}' input_file
- "1E-10"會將科學記號看成字串,結果會有問題
- 一樣會有些結果沒有篩選到
- 答案會是正確的,使用括號會把($2+0)強制轉成數值
- 答案是正確的,也順便把NA刪除
下面是測試用的資料
$ cat > input_file << _EOF_
data1 0.05
data2 1e-14
data3 1e-330
data4 NA
data5 1e-14
data6 2e-60
data7 2e-150
data8 NA
data9 4e-9
_EOF_
使用awk指令處理後的結果,使用的作業系統是macOS Mojave 10.14.4$ awk '$2 < "1E-10" {print}' input_file
data1 0.05
$ awk '$2 < 1E-10 {print}' input_file
data2 1e-14
data5 1e-14
data6 2e-60
data7 2e-150
$ awk '($2+0) < 1E-10 {print}' input_file
data2 1e-14
data3 1e-330
data4 NA
data5 1e-14
data6 2e-60
data7 2e-150
data8 NA
$ awk '($2+0) < 1E-10 && $2 != "NA" {print}' input_file
data2 1e-14
data3 1e-330
data5 1e-14
data6 2e-60
data7 2e-150
參考資料
- Help with filter result (scientific notation) by using awk
- Awk AND operator
- Here document << 命令列直接生成檔案
沒有留言:
張貼留言