Выявить разницу в двух файлах в Unix - PullRequest
0 голосов
/ 27 августа 2018

У меня есть 2 файла rec1.txt и rec2.txt.

[gpadmin@subh ~]$cat ret1.txt
emcas_fin_bi=324
emcas_fin_drr=3294
emcas_fin_exp=887
emcas_fin_optics=0
emcas_gbo_gs=3077

и

[gpadmin@subh ~]$ cat ret2.txt
emcas_fin_bi=333
emcas_fin_drr=5528
emcas_fin_exp=1134
emcas_fin_optics=0
emcas_fin_revpro=0
emcas_gbo_gs=3897

Я предоставляю для сравнения: -

[gpadmin@subh ~]$ diff -y ret1.txt ret2.txt
emcas_fin_bi=324                                 | emcas_fin_bi=333
emcas_fin_drr=3294                               | emcas_fin_drr=5528
emcas_fin_exp=887                                | emcas_fin_exp=1134
emcas_fin_optics=0                                 emcas_fin_optics=0
emcas_gbo_gs=3077                                | emcas_fin_revpro=0
                                                 > emcas_gbo_gs=3897

Я вижу, что это неправильный вывод из вышеприведенного вывода, поскольку emcas_gbo_gs является обычным, но отображается как новое слово: -

emcas_gbo_gs=3077                                | emcas_fin_revpro=0
                                                 > emcas_gbo_gs=3897

Желаемый вывод: -

emcas_gbo_gs=3077                                | emcas_gbo_gs=3897
                                                 > emcas_fin_revpro=0

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

awk на помощь!

$ awk -F= 'NR==FNR {a[$1]=$2; next} 
           $1 in a {if(a[$1]!=$2) print $1 FS a[$1] "\t!" $0; 
                    delete a[$1]; next} 
                   {print " \t>" $0}  
               END {for(k in a) print ">" k"="a[k]}' f1 f2 | column -ts$'\t'

emcas_fin_bi=324    !emcas_fin_bi=333
emcas_fin_drr=3294  !emcas_fin_drr=5528
emcas_fin_exp=887   !emcas_fin_exp=1134
                    >emcas_fin_revpro=0
emcas_gbo_gs=3077   !emcas_gbo_gs=3897
0 голосов
/ 27 августа 2018

Инструмент diff сравнивает строки , а не (ключевые) слова .И даже опция --minimal не дала желаемого результата (по крайней мере, на моем компьютере).

Я вижу два решения:

  • Всегда добавлять новые ключевые слова в концефайл.
  • Отделяет изменения значений от добавления (или удаления) ключевых слов.
...