我想編寫一個包裝腳本,它需要一個小數字,例如1e-3,並將其用作選擇某些數據行的截止點。將小數字傳入awk內部shell不起作用
假設我有一個input.txt中
region p-value
brain 0.009
breast 0.001
liver 1e-7
skin 1e-6
我想用一個p值小於1e-5這是從我的玩具例如肝臟和皮膚較小的選擇區域。
我的劇本目前看起來像select.sh
#!/bin/bash
file=$1
column=$2
cutoff=$3
awk -v a="$column" -v b="$cutoff" '{ if (a < b) print}' $file > $file'.'$cutoff
我會像這樣運行:
bash select.sh input.txt 2 1e-5
這不工作...但是,如果我直接鍵入終端AWK線, 有用。
awk '{if ($2 < 1e-5) print}' input.txt > input.1e-5
所以我知道這可能是awk在shell環境中的一些東西,我不知道。有誰知道如何解決它?
更新:我試圖通過0.00001進入命令,它也沒有工作。
謝謝!
' 「$文件$截止」'會比'$文件更好$ cutoff',這將打破很糟糕,如果任一名稱包含通配符,空格,IFS當前值中包含的字符等。 – 2014-11-21 17:08:39
我明白了。謝謝,將會使用「$ file。$ cutoff」 – olala 2014-11-21 17:13:28