我想使用脚本来减去两个矩阵的值。我的文件有 .dat 或 .ext 扩展名。我相信我可以在脚本中使用一个简单的命令,我可以用它来做到这一点。我搜索了很多,但我唯一找到的是命令 diff,用它我只能找到并打印两个文件之间不同的元素。 我的文件在第一列中有日期,在其余列中有值。我想在另一个文件中写入这两个矩阵相减的结果,但保持第一列不变。谢谢。
文件的结构是这样的:
文件 1:
1890 0.6 0.7 0.0
1910 0.3 0.4 0.2
2100 0.2 0.9 0.3
文件 2:
1890 0.3 0.3 0.0
1910 0.2 0.2 0.1
2100 0.1 0.1 0.1
我想以file3结束
Fil3=File1-File2
文件 3:
1890 0.3 0.4 0.0
1910 0.1 0.2 0.1
2100 0.1 0.8 0.2
我在我的脚本中试过这个:File3 = $File1 - $File2 |猫 $File3
最佳答案
这是一个使用 bash 的解决方案:
#! /bin/bash
file1="file1.txt"
file2="file2.txt"
file3="file3.txt"
echo "Reading input files"
readarray -t mat1 < "$file1" || exit 1
readarray -t mat2 < "$file2" || exit 1
echo "Creating result"
>| "$file3" || exit 1
# Line number
n1=${#mat1[*]}
n2=${#mat2[*]}
((n = n1<n2 ? n1:n2))
for ((i=0; i<n; i++)); do
line1=(${mat1[i]})
line2=(${mat2[i]})
line3=(${line1[0]})
for ((j=1; j<=3; j++)); do
line3+=($(echo "${line1[j]}-${line2[j]}"|bc))
done
echo "${line3[@]}" >> "$file3"
done
echo "done"
exit 0
关于linux - 使用linux脚本减去两个矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26626933/