2011-03-23 59 views
-1

HI我还有一个让你大脑混乱的人;我有2个文本文件,我需要找到行中的差异,并写入第三个文件,但在相同的分区下。比较两个文件,并将第三个文件中的不同记录移动到

例如:

文件:1

==================== ============================== ======================== ============================== 
JOB STATUS - Activity 
==================== ============================== ======================== ============================== 
JOB NAME ,ODATE ,START ,FINISH ,STATUS 

d_voy_audt_trxn_refnc_uld.ksh ,20110317 ,Mar 17,04:41:49 ,Mar 17,04:43 ,SUCCESS 

d_isso_actvy_log_uld_cln.ksh ,20110317 ,Mar 17,03:20:49 ,Mar 17,03:31 ,SUCCESS 

d_voy_svc_sesn_ctm.ksh , ,~~~ UPSTREAM PENDING/YET TO START ~~~ , , 

d_svc_evt_sumry_ld_ctm.ksh , ,~~~ UPSTREAM PENDING/YET TO START ~~~ , , 
==================== ============================== ======================== ============================== 
JOB STATUS - Schedule 
==================== ============================== ======================== ============================== 
JOB NAME ,ODATE ,START ,FINISH ,STATUS 

d_voy_audt_trxn_refnc_uld.ksh ,20110317 ,Mar 17,04:41:49 ,Mar 17,04:43 ,SUCCESS 

d_isso_actvy_log_uld_cln.ksh ,20110317 ,Mar 17,03:20:49 ,Mar 17,03:31 ,SUCCESS 

d_voy_svc_sesn_ctm.ksh , ,~~~ UPSTREAM PENDING/YET TO START ~~~ , , 

d_svc_evt_sumry_ld_ctm.ksh , ,~~~ UPSTREAM PENDING/YET TO START ~~~ , , 
==================== ============================== ======================== ============================== 
JOB STATUS - Linkage 
==================== ============================== ======================== ============================== 
JOB NAME ,ODATE ,START ,FINISH ,STATUS 

d_voy_audt_trxn_refnc_uld.ksh ,20110317 ,Mar 17,04:41:49 ,Mar 17,04:43 ,SUCCESS 

d_isso_actvy_log_uld_cln.ksh ,20110317 ,Mar 17,03:20:49 ,Mar 17,03:31 ,SUCCESS 

d_voy_svc_sesn_ctm.ksh , ,~~~ UPSTREAM PENDING/YET TO START ~~~ , , 

d_svc_evt_sumry_ld_ctm.ksh , ,~~~ UPSTREAM PENDING/YET TO START ~~~ , , 
############################################################################################################################# 

文件:2

==================== ============================== ======================== ============================== 
JOB STATUS - Activity 
==================== ============================== ======================== ============================== 
JOB NAME ,ODATE ,START ,FINISH ,STATUS 

d_voy_audt_trxn_refnc_uld.ksh ,20110317 ,Mar 17,04:41:49 ,Mar 17,04:43 ,SUCCESS 

d_isso_actvy_log_uld_cln.ksh ,20110317 ,Mar 17,03:20:49 ,Mar 17,03:31 ,SUCCESS 

d_voy_svc_sesn_ctm.ksh ,20110317 ,Mar 17,03:20:49 ,Mar 17,03:31 ,SUCCESS 

d_svc_evt_sumry_ld_ctm.ksh ,20110317 ,Mar 17,03:20:49 ,Mar 17,03:31 ,SUCCESS 
==================== ============================== ======================== ============================== 
JOB STATUS - Schedule 
==================== ============================== ======================== ============================== 
JOB NAME ,ODATE ,START ,FINISH ,STATUS 

d_voy_audt_trxn_refnc_uld.ksh ,20110317 ,Mar 17,04:41:49 ,Mar 17,04:43 ,SUCCESS 

d_isso_actvy_log_uld_cln.ksh ,20110317 ,Mar 17,03:20:49 ,Mar 17,03:31 ,SUCCESS 

d_voy_svc_sesn_ctm.ksh ,20110317 ,Mar 17,03:20:49 ,Mar 17,03:31 ,SUCCESS 

d_svc_evt_sumry_ld_ctm.ksh ,20110317 ,Mar 17,03:20:49 ,Mar 17,03:31 ,SUCCESS 
==================== ============================== ======================== ============================== 
JOB STATUS - Linkage 
==================== ============================== ======================== ============================== 
JOB NAME ,ODATE ,START ,FINISH ,STATUS 

d_voy_audt_trxn_refnc_uld.ksh ,20110317 ,Mar 17,04:41:49 ,Mar 17,04:43 ,SUCCESS 

d_isso_actvy_log_uld_cln.ksh ,20110317 ,Mar 17,03:20:49 ,Mar 17,03:31 ,SUCCESS 

d_voy_svc_sesn_ctm.ksh ,20110317 ,Mar 17,03:20:49 ,Mar 17,03:31 ,SUCCESS 

d_svc_evt_sumry_ld_ctm.ksh ,20110317 ,Mar 17,03:20:49 ,Mar 17,03:31 ,SUCCESS 

############################################################################################################################# 

输出文件:

==================== ============================== ======================== ============================== 
JOB STATUS - Activity 
==================== ============================== ======================== ============================== 
JOB NAME ,ODATE ,START ,FINISH ,STATUS 

d_voy_svc_sesn_ctm.ksh ,20110317 ,Mar 17,03:20:49 ,Mar 17,03:31 ,SUCCESS 

d_svc_evt_sumry_ld_ctm.ksh ,20110317 ,Mar 17,03:20:49 ,Mar 17,03:31 ,SUCCESS 

==================== ============================== ======================== ============================== 
JOB STATUS - Schedule 
==================== ============================== ======================== ============================== 
JOB NAME ,ODATE ,START ,FINISH ,STATUS 

d_voy_svc_sesn_ctm.ksh ,20110317 ,Mar 17,03:20:49 ,Mar 17,03:31 ,SUCCESS 

d_svc_evt_sumry_ld_ctm.ksh ,20110317 ,Mar 17,03:20:49 ,Mar 17,03:31 ,SUCCESS 

==================== ============================== ======================== ============================== 
JOB STATUS - Linkage 
==================== ============================== ======================== ============================== 
JOB NAME ,ODATE ,START ,FINISH ,STATUS 

d_voy_svc_sesn_ctm.ksh ,20110317 ,Mar 17,03:20:49 ,Mar 17,03:31 ,SUCCESS 

d_svc_evt_sumry_ld_ctm.ksh ,20110317 ,Mar 17,03:20:49 ,Mar 17,03:31 ,SUCCESS 

在上述2个文件(文件1 & file2)3行对于所有的3 分区是不同的,所以我想将3 row frm file2只写入到一个新文件 (输出文件)。所以我需要一个脚本,在两个 文件之间找到不匹配的行,并在同一分区下写入第三个文件。

我试着用下面的查询,但IAM无法得到输出结果 下对应的分区

awk 'NR==FNR && !/^=/{a[$0]++;next} !/^=/{if(/^JOB /){y=$0;tmp getline;print tmp;print y}if(!a[$0]){print $0}}' file1 file2 

我得到的输出象下面这样,但我需要一个像输出文件输出:

JOB NAME ,ODATE ,START ,FINISH ,STATUS 

d_voy_svc_sesn_ctm.ksh ,20110317 ,Mar 17,03:20:49 ,Mar 17,03:31 ,SUCCESS 

d_svc_evt_sumry_ld_ctm.ksh ,20110317 ,Mar 17,03:20:49 ,Mar 17,03:31 ,SUCCESS 

JOB NAME ,ODATE ,START ,FINISH ,STATUS 

d_voy_svc_sesn_ctm.ksh ,20110317 ,Mar 17,03:20:49 ,Mar 17,03:31 ,SUCCESS 

d_svc_evt_sumry_ld_ctm.ksh ,20110317 ,Mar 17,03:20:49 ,Mar 17,03:31 ,SUCCESS 

JOB NAME ,ODATE ,START ,FINISH ,STATUS 

d_voy_svc_sesn_ctm.ksh ,20110317 ,Mar 17,03:20:49 ,Mar 17,03:31 ,SUCCESS 

d_svc_evt_sumry_ld_ctm.ksh ,20110317 ,Mar 17,03:20:49 ,Mar 17,03:31 ,SUCCESS 

回答

0

使用命令行中的diff工具。使用sed或grep等工具过滤输出,然后将其重定向到目标文件。

+0

嘿,伙计,你可以详细解释一个示例代码 – user672556 2011-03-25 06:34:45

0

comm -1 file1 file2 | sed 's/^\t//'也许? (您可能需要使用文字标签,而不是\tCtrl-VTab

+0

嘿,这只是给出了两个文件之间的区别,这可以通过我的代码自己实现,但我需要在corressponding标题下的不同记录 – user672556 2011-03-25 06:36:28

+0

Erg,thinko。它应该只在新文件中输出公共行和行;但是这当然包括没有改变的数据以及标题,这意味着它与新文件相同。您需要一个通过标题复制的脚本,否则仅输出新文件中根本不在原始或已更改的条目。希望这个描述告诉你如何继续。 – geekosaur 2011-03-25 06:43:48

+0

你可以帮我用一个脚本来实现这一点。 – user672556 2011-03-28 07:18:23

0

使用差异工具。请参阅man页面寻求帮助。

相关问题