2014-05-25 59 views
0

我有一個文本文件中包含的數據列這樣的:做數學在Shell腳本

col1  col2 col3 col4 col5 col6 col7 col8 col9 col10 

50.000 7.920 0.509 11.2 2.60 192.7 25.71 0.3490 188.6 17.81 
50.170 7.920 0.609 12.2 2.72 211.7 26.17 0.3326 213.8 18.19 
50.330 7.920 0.712 14.1 2.92 218.9 28.17 0.3228 215.1 21.73 
... 

我想創造另一個分隔的文本文件(使用bash腳本)從第一個它的列有派生值作爲這些:

col1  col2  col3  col3*[-sin(col6)]  col3*[-cos(col6)] 
... 

sin是正弦函數和cos是在數學餘弦函數。 我該怎麼做?

在此先感謝。

+0

如果你開始有這樣的需求,很可能是bash不再是工作的工具。我並不是說你不能這麼做(用cut/expr/inline awk/Perl的尷尬組合),但是寫起來更容易,而且更容易閱讀,只需要用「真實」的語言。 –

回答

1

我更長的版本使用BC:

awk '{printf "%f * -s (%f);\n", $3, $6}' < input.txt | bc -l > col4.txt 
awk '{printf "%f * -c (%f);\n", $3, $6}' < input.txt | bc -l > col5.txt 
awk '{print $1, $2, $3}' < input.txt | paste -d " " - col4.txt col5.txt 
2

試試這個awk命令,

awk '{var=$3*-sin($6); foo=$3*-cos($6); print $1,$2,$3,var,foo;}' file