0

次のようにタブで区切られた内部に 2x2 の行列番号を持つ data.txt を読みたい:

0.5 0.1
0.3 0.2

このファイルを bash で読み込んで配列に保存し、少し処理してから再度ファイルにエクスポートする方法はありますか? たとえば、matlab のように:

a=dlmread('data.txt') //read file to array variable a
for i=1:2
   for j=1:2
   b[i][j]=a[i][j]+100
   end
end
dlmwrite(b,'data2.txt') //exporting array value b to data2.txt
4

1 に答える 1

0

処理の範囲が、すべてのエントリに 100 を追加するような単純なものである場合、次のawkような単純なコマンドが機能する可能性があります。

awk '{ for(i = 1; i <= NF - 1; i++) { printf("%.1f%s", $i + 100, OFS); } printf("%.1f%s", $NF+100, ORS); }' < matrix.txt

これは、各行をループして 100 を加算するだけです。より複雑な操作を行うこともできますが、本当に行列を処理したい場合は、より優れたツール ( python+numpyや などoctave) があります。

配列を使用することも可能ですが、浮動小数点演算を処理しないbashため、とにかく外部プログラムを使用する必要がある操作を行うには.bash

于 2013-03-27T05:56:12.547 に答える