私は主に行列形式の数字で構成される2つの大きなファイルを持っており、diff(または同様のコマンド)を使用してファイルを比較し、どの数字が異なるかを確認したいと思います。
残念ながら、これらの数の多くは符号のみが異なるため、これらの違いには興味がありません。私は2つの数字のサイズが異なる場合にのみ興味があります。 (つまり0.523 vs. 0.623
、私は欲しいがいいえ 0.523 vs. -0.523
)
diffにシンボルを無視し、サイズの異なる数字だけを印刷させることはできますか?
編集:要求されたいくつかの入力例:
ファイル1:
21 -0.0081318 0.0000000 0.0000000 0.0000000 -0.0138079
22 0.0000000 0.0000000 0.0000000 0.1156119 0.0000000
23 0.0000000 0.0047536 0.0000000 0.0000000 0.0000000
ファイル2:
21 -0.0081318 0.0000000 0.0000000 0.0000000 0.0032533
22 0.0000000 0.0000000 0.0000000 -0.0250637 0.0000000
23 0.0000000 -0.0047536 0.0000000 0.0000000 0.0000000
私のファイルがほとんどこのような形式であると仮定すると(はるかに長い場合を除き)、違いを印刷したいのですが、シンボルの場合は違いを無視します。たとえば、0.0047536対-0.0047536は関係ありませんが、0.1156119対-0.0250637を印刷したいと思います。
ベストアンサー1
bash
シェルが「プロセスの置き換え」(最近のesなど)を提供している場合は、次のことを試してください。
diff <(tr '-' ' ' <file1) <(tr '-' ' '<file2)
1,2c1,2
< 21 0.0081318 0.0000000 0.0000000 0.0000000 0.0138079
< 22 0.0000000 0.0000000 0.0000000 0.1156119 0.0000000
---
> 21 0.0081318 0.0000000 0.0000000 0.0000000 0.0032533
> 22 0.0000000 0.0000000 0.0000000 0.0250637 0.0000000