Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
unixshell脚本_Shell_Unix_Compare - Fatal编程技术网

unixshell脚本

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 如果

我有一种情况,我有一个源文件和一个目标文件,应该是相似的。 源文件包含如下信息集。我需要比较源文件和目标文件中的每一组信息。如果目标文件中缺少任何内容,我需要将该行写入目标文件。 我本可以逐行匹配,但源文件和目标文件的集合不符合顺序。 请帮助我如何实现使用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]中缺少日期,因此,我需要从源文件复制它。

通过文件\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时,我需要记住标题行。。。!!