2017-07-04 22 views
0

私はいくつかの列を持つテーブルを持っており、テーブル内のすべての行に最初の行(列単位)の値を掛けたいと考えています。awkテーブル内のすべての行とテーブルの最初の行との乗算

表:

0,140 0,130 0,140 0,150 0,160 <- values to be used for multiplication 
1,270 1,190 6,080 3,760 2,810 
1,290 1,140 6,110 3,900 3,050 
1,370 1,160 6,310 4,030 3,020 
1,370 1,150 6,500 3,970 3,070 

結果:

0,178 0,155 0,851 0,564 0,450 
0,181 0,148 0,855 0,585 0,488 
0,192 0,151 0,883 0,605 0,483 
0,192 0,150 0,910 0,596 0,491 

私はawkといくつかの経験を持っているが、私は解決策を見つけ出すことができませんでした。

+1

「Awk」であなたの_experience_で行った試行を共有できますか? – Inian

+1

また、これが宿題の場合は、正直でお伝えください。 – jdv

+0

これは宿題ではなく、私の科学的研究の一部です。目的は一連の測定値からサンプルの濃度を計算することです。私は実際には2つのテーブルを扱っていました.1つは、最大30列と1000行の測定データと定数付きのリストでした。しかし、私はどのように他のテーブルの行と1つの行のテーブルを混ぜるかを理解できませんでした。大きなテーブルの上に単一の行を貼り付けるだけで近づきましたが、テーブル全体に掛け算をすることはできませんでした。 – Fritzth

答えて

1
$ awk 'NR==1{split($0,m);CONVFMT="%.3f";next} {for (i=1;i<=NF;i++) $i=$i*m[i]} 1' file 
0.178 0.155 0.851 0.564 0.450 
0.181 0.148 0.855 0.585 0.488 
0.192 0.151 0.883 0.605 0.483 
0.192 0.149 0.910 0.596 0.491 

それは私のロケールが小数点のために使用するものだと私は私のサンプルで.の代わりの, Sを使用。

+1

それはそうです!偉大な - あなたの助けを多く​​のおかげで。 – Fritzth

+1

Nice Ed、そのリンクがわからない:)そのリンクも投稿する(私が思う新しいユーザのために) – RavinderSingh13

関連する問題