2011-03-23 122 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頁面尋求幫助。

相關問題