比较两个文本文档中的数字,如果差异太大则打印出来

Compare numbers in two text documents and print out if the difference is too big

我得到了两个具有以下结构的文本文件。 一个数字,然后是一些空格和文件路径。

--- File 1 ---
1198464 ./aaa/file_A
   6345 ./bbb/file_B
  24345 ./bbb/file_C
2345212 ./ccc/file_D
  92315 ./ddd/file_E
 852217 ./ddd/file_F

--- File 2 ---
1198464 ./aaa/file_A
   1234 ./bbb/file_B
  24340 ./bbb/file_C
 452217 ./ddd/file_F

现在我想比较这两个文件并只打印出存在于两个文档中且数字相差大于“8”的文件名。 在上述情况下,应打印出以下内容:

file_B
file_F

file_C不会打印出来,因为24345和24340的差值小于8。

awk -F[\/.] 'NR==FNR { map[$NF]= } NR!=FNR { gsub(" ","",);if ((map[$NF] -)>8) { print $NF }  }' File1 File2

将字段分隔符设置为 / 或 。 Process File1 first (NR==FNR) 创建一个数组(map),以最后一个字段(NF - 文件名)为索引,大小为值。然后对于第二个文件 (NR!=FNR) 使用 gsub 删除所有空格,然后当大小差异大于 8 时,打印最后一个字段(文件名)