逐行比较两个文件,并将唯一数据存储在第二个文件中[linux / java]

时间:2018-08-28 12:56:26

标签: linux shell

我正在尝试制作一个shell脚本,该脚本将比较两个文件并将文件1中的唯一行附加到文件2。

因此,为了更加客观: 每5分钟使用一次curl递归下载的日志文件数据将覆盖名为temp.txt的优良名称。

curl -X GET https://anypoint.mulesoft.com/cloudhub/api/v2/applications/app-name/instances/5y83962206n79e114d530a41-1/log-file -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Cache-Control: no-cache' -H 'X-ANYPNT-ENV-ID: Sandbox' > temp.txt

现在,我还有一个名为backup.txt的文件,需要将其与temp.txt进行比较并添加唯一的内容。出现以下情况

  1. 第一次运行时,将整个temp.txt复制到backup.txt 1st Run File content
  2. 第二次运行时,仅将新行(如果有的话)添加到backup.txt 2nd Run File content

到目前为止,我可以使用linux的 comm 实用工具

在某些情况下,temp.txt完全从第一行开始就有新内容。

  1. 在第3种情况下,我们再次需要将整个数据附加到backup.txt 3rd Run File content
  2. 在第四轮中,与第三轮中的内容相比,我们会有新行,但与第一轮和第二轮中的内容完全不同。 4th Run File content

这是我面临的挑战,无法继续前进。

我从某一个SO链接中使用了 awk

awk 'FNR==NR {a[$0]++; next} !a[$0]' file2.txt file1.txt >> file2.txt

,但是当第一行和第二行有相似行时,它将失败。它省略了这些行!例如:如果重复的公共行被忽略,则第三和第四次运行图像中的json。

  

“ httpStatus”:400,“ errorOccurred”:true”

在使用awk时,上述字段将被忽略,从而导致数据丢失。

任何帮助都非常感谢!我还没有Java代码,但我主要是在这里寻求逻辑帮助。

致谢

考施克

1 个答案:

答案 0 :(得分:0)

如果具有备份的所有内容和一些新行,为什么不拥有新下载文件的副本?