unixshell脚本
我有一种情况,我有一个源文件和一个目标文件,应该是相似的。 源文件包含如下信息集。我需要比较源文件和目标文件中的每一组信息。如果目标文件中缺少任何内容,我需要将该行写入目标文件。 我本可以逐行匹配,但源文件和目标文件的集合不符合顺序。 请帮助我如何实现使用shell脚本 源文件:unixshell脚本,shell,unix,compare,Shell,Unix,Compare,我有一种情况,我有一个源文件和一个目标文件,应该是相似的。 源文件包含如下信息集。我需要比较源文件和目标文件中的每一组信息。如果目标文件中缺少任何内容,我需要将该行写入目标文件。 我本可以逐行匹配,但源文件和目标文件的集合不符合顺序。 请帮助我如何实现使用shell脚本 源文件: [Set.1] value=1 date=today [Set.2] value=2 date=today 目标文件: [Set.2] value=2 [Set.1] value=1 date=today 如果
[Set.1]
value=1
date=today
[Set.2]
value=2
date=today
目标文件:
[Set.2]
value=2
[Set.1]
value=1
date=today
如果您可以看到,目标文件的[Set.2]中缺少日期,因此,我需要从源文件复制它。通过文件\u set2下面的命令,如果文件\u set2中存在任何缺少的内容,则将比较文件\u set1和文件\u set1
awk 'FNR==NR{a[$0];next}!($0 in a)' file_set2 file_set1 >>file_set2
您可以尝试使用rsync
rsync /target/file/path /source/file/path
这不是一个很容易的问题,就是一个很难解决的问题。如果您只需要使文件相同,那么
cp source_file target_file
那就足够了。但似乎您希望保持target\u文件中节的顺序不变。这将要求您首先解析文件,并记住各部分的顺序
由于这是Windows INI文件格式,因此节的顺序对于读取它的程序来说应该不重要。检查以确保读卡器是否真正关心。两个文件中的数据是否相同,还是只有模式相同?数据是否相同。我们需要最终填补空白,使它们与目标文件相同。mv或cp文件这将不起作用,因为两个文件中都有行date=today
,但不是两个位置都需要它。您好,rsync看起来是一个简单的选项,但我的src文件是一种增量文件。tgt_文件包含更多缺少字段的信息,这些信息可以在src delta文件中找到。我只需要复制src_文件中的内容,同时保持目标_文件的完整性。谢谢您的输入。就像我在下面提到的,src文件是一种增量文件,所以,通过引用多个src文件,我更新了我的tgt文件。虽然排序不是问题,但集合中的数据可以重复。所以,在tgt文件中进行grepping时,我需要记住标题行。。。!!