从文件中读取分隔值到数组变量

时间:2013-03-27 05:39:00

标签: bash

我想读取data.txt,它有一个2x2矩阵编号,内部用tab分隔,如下所示:

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

1 个答案:

答案 0 :(得分: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.也可以执行更复杂的操作,但如果您真的需要toprocess矩阵,那么有更好的工具(如python + numpy或{{1 }})。

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

相关问题