我對使用awk有點新。我的目標是創建窗體的bash函數:awk乘法給出零
myfunction file column value
這需要在文件中給定的列號,值相乘,並重寫文件。現在我已經寫了以下內容:
function multiply_column {
file=$1
column=$2
value=$3
awk -F" " '{print $col*mul}' col=$column mul=$value $file
}
我的文件是這樣的:
0.400000E+15 0.168933E+00 -0.180294E-44 0.168933E+00
0.401000E+15 0.167689E+00 -0.181383E-44 0.167689E+00
0.402000E+15 0.166502E+00 -0.182475E-44 0.166502E+00
0.403000E+15 0.165371E+00 -0.183569E-44 0.165371E+00
0.404000E+15 0.164298E+00 -0.184666E-44 0.164298E+00
0.405000E+15 0.163284E+00 -0.185766E-44 0.163284E+00
0.406000E+15 0.162328E+00 -0.186868E-44 0.162328E+00
0.407000E+15 0.161431E+00 -0.187972E-44 0.161431E+00
0.408000E+15 0.160593E+00 -0.189080E-44 0.160593E+00
0.409000E+15 0.159816E+00 -0.190189E-44 0.159816E+00
0.410000E+15 0.159099E+00 -0.191302E-44 0.159099E+00
0.411000E+15 0.158442E+00 -0.192416E-44 0.158442E+00
0.412000E+15 0.157847E+00 -0.193534E-44 0.157847E+00
0.413000E+15 0.157312E+00 -0.194653E-44 0.157312E+00
0.414000E+15 0.156840E+00 -0.195775E-44 0.156840E+00
0.415000E+15 0.156429E+00 -0.196899E-44 0.156429E+00
0.416000E+15 0.156081E+00 -0.198026E-44 0.156081E+00
0.417000E+15 0.155796E+00 -0.199154E-44 0.155796E+00
0.418000E+15 0.155573E+00 -0.200285E-44 0.155573E+00
0.419000E+15 0.155413E+00 -0.201418E-44 0.155413E+00
0.420000E+15 0.155318E+00 -0.202554E-44 0.155318E+00
0.421000E+15 0.155285E+00 -0.203691E-44 0.155285E+00
0.422000E+15 0.155318E+00 -0.204831E-44 0.155318E+00
0.423000E+15 0.155414E+00 -0.205973E-44 0.155414E+00
0.424000E+15 0.155575E+00 -0.207116E-44 0.155575E+00
0.425000E+15 0.155802E+00 -0.208262E-44 0.155802E+00
我設法只是打印的第一列,但是當我跟我的價值乘以它,awk給予我0 。我嘗試了其他格式不同的文件,我的功能完美。我也試圖把它與BC結合起來,沒有任何成功。
有沒有人看到爲什麼在這種情況下awk給0?
在此先感謝!
#########編輯我剛剛發現,如果我的數據文件使用逗號,而不是點(即0,400000E的+ 15代替0.400000E + 15),我的功能工作正常。所以不知何故,在某個地方,某些東西被配置爲將逗號理解爲科學記號分隔符而不是點。這對任何人都是鍾情嗎?
嗯,適合我... –
我忘了提及我使用Mac OSX。這可能是相關的嗎? – Scrimbibete
你如何精確地調用'multiply_column'函數?哪些參數? – hek2mgl