Bonjour à tous,
J’ai pas mal chipoté pour arriver à faire ce que je voulais parce que diff prend en compte aussi la ligne où apparait mon “tag”.
Je résume le problème. J’ai deux fichiers. Le deuxième contient une partie des “tags” qui sont dans le premier fichier. Comment trouver quels tags sont dans le premier et pas dans le deuxième ?
Fichiers de bases :
PerfTag_EMALLNIFIXSRVF_iFixAE_InterfaceAverageEventRate
PerfTag_EMALLNIFIXSRVF_iFixAE_InterfaceMaximumEventRate
PerfTag_EMALLNIFIXSRVF_iFixAE_InterfaceMinimumEventRate
PerfTag_EMALLNIFIXSRVF_iFixAE_InterfaceOutOfOrderEvents
PerfTag_EMALLNIFIXSRVF_iFixAE_InterfaceOverruns
PFILLN05.PRAU_6810034_PCHAMBER_CONVERT.F_CV
PFILLN05.PRAU_6810034_T10_CONVERTED.F_CV
PFILLN05.PRAU_6810034_T11_CONVERTED.F_CV
PFILLN05.PRAU_6810034_T12_CONVERTED.F_CV
PFILLN05.PRAU_6810034_T13_CONVERTED.F_CV
PFILLN05.PRAU_6810034_T14_CONVERTED.F_CV
PFILLN05.PRAU_6810034_T15_CONVERTED.F_CV
PFILLN05.PRAU_6810034_T16_CONVERTED.F_CV
PFILLN05.PRAU_6810034_T1_CONVERTED.F_CV
PFILLN05.PRAU_6810034_T2_CONVERTED.F_CV
PFILLN05.PRAU_6810034_T3_CONVERTED.F_CV
PFILLN05.PRAU_6810034_T4_CONVERTED.F_CV
PFILLN05.PRAU_6810034_T5_CONVERTED.F_CV
PFILLN05.PRAU_6810034_T6_CONVERTED.F_CV
PFILLN05.PRAU_6810034_T7_CONVERTED.F_CV
PFILLN05.PRAU_6810034_T8_CONVERTED.F_CV
PFILLN05.PRAU_6810034_T9_CONVERTED.F_CV
PFILLN05.PRAU_6810034_PCHAMBER_CONVERT.F_CV
PFILLN05.PRAU_6810034_T1_CONVERTED.F_CV
PFILLN05.PRAU_6810034_T2_CONVERTED.F_CV
PFILLN05.PRAU_6810034_T3_CONVERTED.F_CV
PFILLN05.PRAU_6810034_T4_CONVERTED.F_CV
1er essais :
$ diff fich1.txt fich2.txt | grep "< "
< PerfTag_EMALLNIFIXSRVF_iFixAE_InterfaceAverageEventRate
< PerfTag_EMALLNIFIXSRVF_iFixAE_InterfaceMaximumEventRate
< PerfTag_EMALLNIFIXSRVF_iFixAE_InterfaceMinimumEventRate
< PerfTag_EMALLNIFIXSRVF_iFixAE_InterfaceOutOfOrderEvents
< PerfTag_EMALLNIFIXSRVF_iFixAE_InterfaceOverruns
< PFILLN05.PRAU_6810034_T10_CONVERTED.F_CV
< PFILLN05.PRAU_6810034_T11_CONVERTED.F_CV
< PFILLN05.PRAU_6810034_T12_CONVERTED.F_CV
< PFILLN05.PRAU_6810034_T13_CONVERTED.F_CV
< PFILLN05.PRAU_6810034_T14_CONVERTED.F_CV
< PFILLN05.PRAU_6810034_T15_CONVERTED.F_CV
< PFILLN05.PRAU_6810034_T16_CONVERTED.F_CV
< PFILLN05.PRAU_6810034_T5_CONVERTED.F_CV
< PFILLN05.PRAU_6810034_T6_CONVERTED.F_CV
< PFILLN05.PRAU_6810034_T7_CONVERTED.F_CV
< PFILLN05.PRAU_6810034_T8_CONVERTED.F_CV
< PFILLN05.PRAU_6810034_T9_CONVERTED.F_CV
Ça marche sur ces deux petits extraits de fichiers mais ça ne marche pas sur mes deux gros fichiers.
Quand je fais la même chose avec les deux fichiers complets, j’ai toutes les fichiers du premier fichier qui apparaissent… Par exemple, la ligne “PFILLN05.PRAU_6810034_PCHAMBER_CONVERT.F_CV” ou la ligne “PFILLN05.PRAU_6810034_T1_CONVERTED.F_CV” ?!
$ diff tags_de_HISTORIAN_sorted.txt tags_des_COURBES_SCADA_et_REPORTING_CHART_sorted.txt | grep "< " | more
< PerfTag_EMALLNIFIXSRVF_iFixAE_InterfaceAverageEventRate
< PerfTag_EMALLNIFIXSRVF_iFixAE_InterfaceMaximumEventRate
(...)
< PerfTag_PFILLND_11_iFIX_InterfaceTotalEventsReported
< PFILLN05.PRAU_6810034_PCHAMBER_CONVERT.F_CV
< PFILLN05.PRAU_6810034_T10_CONVERTED.F_CV
(...)
< PFILLN05.PRAU_6810034_T16_CONVERTED.F_CV
< PFILLN05.PRAU_6810034_T1_CONVERTED.F_CV
(...)
J’ai fouillé un peu dans le man de diff et voilà ce que j’ai finalement utilisé comme commande :
$ diff -abBiy tags_de_HISTORIAN_sorted.txt tags_des_COURBES_SCADA_et_REPORTING_CHART_sorted.txt | more
PerfTag_EMALLNIFIXSRVF_iFixAE_InterfaceAverageEventRate <
(...)
PerfTag_PFILLND_11_iFIX_InterfaceTotalEventsReported <
(...)
PFILLN05.PRAU_6810034_PCHAMBER_CONVERT.F_CV PFILLN05.PRAU_6810034_PCHAMBER_CONVERT.F_CV
PFILLN05.PRAU_6810034_T16_CONVERTED.F_CV <
PFILLN05.PRAU_6810034_T1_CONVERTED.F_CV PFILLN05.PRAU_6810034_T1_CONVERTED.F_CV
Bingo! Les lignes avec le chevrons “<” à la fin sont celles qui n’apparaissent pas dans le deuxième fichier ! Plus qu’à faire un grep là-dessus et à envoyer ça dans un fichier
$ diff -abBiy tags_de_HISTORIAN_sorted.txt tags_des_COURBES_SCADA_et_REPORTING_CHART_sorted.txt | grep "<$" >> fichier_diff.txt
Pour bien faire, il faut encore que je fasse un sed dessus pour nettoyer.
$ diff -abBiy tags_de_HISTORIAN_sorted.txt tags_des_COURBES_SCADA_et_REPORTING_CHART_sorted.txt | grep "<$" | sed -e 's/[ \t]*<$//' >> fichier_diff_clean.txt
Yes! Cette fois-ci, c’est parfait ! 