あるファイルの1行を別のファイルのすべての行から減算します。

あるファイルの1行を別のファイルのすべての行から減算します。

あるファイルの行を取得し、別のファイルのすべての行を列ごとに減算したいと思います。

入力する:file1

1 1 1 1
3 1 5 1
1 5 8 2

入力する:file2

1 1 1 1

希望の出力:file3

0 0 0 0
2 0 4 0
0 4 7 1

ええと、sed?

ベストアンサー1

そしてawk

awk 'NR==1   { for(i=1; i<=NF; i++) a[i] = $i }
     FNR!=NR { for(i=1; i <NF; i++) $i -= a[i]; print }' file2 file1

これは次のことを前提としています。

  1. 関連する行はfile2常に最初の行です。
  2. 最初の行file2とすべての行file1の列数が同じです。
  3. 列間に複数のスペースがある場合は、file1スペースを保持する必要はありません。

おすすめ記事