0

我想读取 data.txt ,其中有一个 2x2 矩阵数,由制表符分隔,如下所示:

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+numpyoctave)。

也可以使用bash数组,但要执行任何操作,无论如何您都必须使用外部程序,因为bash它不处理浮点运算。

于 2013-03-27T05:56:12.547 回答