1

我有一个情况,我有一个源文件和一个目标文件,应该是相似的。源文件具有如下信息集。我需要比较源文件和目标文件中的每组信息。如果目标文件中缺少任何内容,我需要将该行写入目标文件。我可以逐行匹配,但是源文件和目标文件的集合不按顺序排列。请帮助我如何使用shell脚本实现。

源文件:

[Set.1]
value=1
date=today

[Set.2]
value=2
date=today

目标文件:

[Set.2]
value=2

[Set.1]
value=1
date=today

如果您可以看到,目标文件的 [Set.2] 中缺少日期,所以我需要从源文件中复制它。

4

3 回答 3

0

通过下面的命令,将比较 file_set2 和 file_set1,如果 file_set2 中缺少的任何内容存在于 file_set1 中,则将被复制回 file_set2。

awk 'FNR==NR{a[$0];next}!($0 in a)' file_set2 file_set1 >>file_set2
于 2013-10-16T10:43:24.643 回答
0

您可以尝试使用 rsync

rsync /target/file/path /source/file/path 
于 2013-10-16T11:05:57.480 回答
0

这要么是一个非常简单的问题,要么是一个很难的问题。如果您只需要使文件相同,那么

cp source_file target_file

就足够了。但是您似乎希望保持部分的顺序target_file不变。这将要求您首先解析文件记住部分的顺序。

由于这是 Windows INI 文件格式,因此段的顺序对于读取它的程序来说不应该是重要的。检查以确保读者是否真的关心。

于 2013-10-16T12:16:33.013 回答