Сравните два файла и переместите разные записи в третий файл - PullRequest
0 голосов
/ 23 марта 2011

Привет, у меня есть еще один обманщик для всех вас; У меня есть 2 текстовых файла, мне нужно найти diff в строке и написать в третьем файле, но в тех же разделах.

например:

Файл: 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 файлах (file1 & file2) строки 3 & 4 различны для всех 3 раздел, поэтому я хочу записать 3 и 4 строки из файла file2 только в новый файл (Выходной файл). Так что мне нужен скрипт, который находит несоответствующую строку между двумя файл и записать в третий файл под тем же разделом.

Я пытался с помощью запроса ниже, но я не смог получить результат под соответствующий раздел

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 

Ответы [ 3 ]

0 голосов
/ 23 марта 2011

comm -1 file1 file2 | sed 's/^\t//' возможно?(Возможно, вам придется использовать буквенную вкладку вместо \t: Ctrl-V, Tab.)

0 голосов
/ 23 марта 2011

Используйте diff tool.см. справочную страницу man .

0 голосов
/ 23 марта 2011

Используйте инструмент diff из командной строки. Отфильтруйте вывод с помощью такого инструмента, как sed или grep, а затем перенаправьте его в файл назначения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...