Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Confrontare due file testo riga per riga

Moderatori: Foto UtenteMassimoB, Foto Utentexyz

1
voti

[1] Confrontare due file testo riga per riga

Messaggioda Foto UtenteMax2433BO » 22 apr 2020, 16:35

Buondì a tutti,

avrei la necessità di confrontare due file testo, nella fattispecie due file relativi alle librerie di FidoCadJ, in modo da vedere se in una mancano o sono state modificate alcune linee di testo.

In pratica mi servirebbe un confronto riga per riga tipo:

prendo tutta una riga dal file campione e la confronto con tutte le righe del file modificato, se è presente, anche in una riga differente OK, altrimenti segnalarla come mancante/modificata.

Alla fine dovrei avere l'elenco delle righe mancanti nel file modificato.

Mi servirebbe per vedere se riesco a replicare un problema che è stato segnalato su FidoCadJ quando si aggiorna una libreria con un nuovo componente.

Ho provato ad utilizzare sia diffuse che meld diff viewer (entrambi GUI del comando da terminale diff) ma questi mi segnalano qualsiasi riga che non corrisponde anche solo per posizione tra i due e, dal momento che in fase di aggiornamento libreria il file può risultare anche con le righe mescolate, questi programmi mi mostrano dei gran falsi positivi.

Per chi non li avesse mai visti allego un file .zip che contiene due file di libreria FidoCadJ: lib_agg.fcl (il file campione) e lib_agg_mod.fcl (il file modificato con l'aggiunta di un componente).

N.B. I file .fcl sono normali file di testo.

O_/ Max

lib_agg_prova.zip
(57.51 KiB) Scaricato 15 volte
Disapprovo quello che dite, ma difenderò fino alla morte il vostro diritto di dirlo [attribuita a Voltaire]

Sapere sia di sapere una cosa, sia di non saperla: questa è conoscenza. [Confucio, "I colloqui"]
Avatar utente
Foto UtenteMax2433BO
12,0k 4 10 13
G.Master EY
G.Master EY
 
Messaggi: 2886
Iscritto il: 25 set 2013, 16:29
Località: Un puntino insignificante nell'universo!!

0
voti

[2] Re: Confrontare due file testo riga per riga

Messaggioda Foto Utentetonnoto » 22 apr 2020, 16:53

Avatar utente
Foto Utentetonnoto
511 5
Frequentatore
Frequentatore
 
Messaggi: 187
Iscritto il: 10 feb 2016, 23:57

0
voti

[3] Re: Confrontare due file testo riga per riga

Messaggioda Foto UtenteMax2433BO » 22 apr 2020, 16:56

... scusa Foto Utentetonnoto, ma siamo nella sezione Linux per cui mi sembrava sottinteso che cercassi una soluzione da utilizzare con questo s.o....
Disapprovo quello che dite, ma difenderò fino alla morte il vostro diritto di dirlo [attribuita a Voltaire]

Sapere sia di sapere una cosa, sia di non saperla: questa è conoscenza. [Confucio, "I colloqui"]
Avatar utente
Foto UtenteMax2433BO
12,0k 4 10 13
G.Master EY
G.Master EY
 
Messaggi: 2886
Iscritto il: 25 set 2013, 16:29
Località: Un puntino insignificante nell'universo!!

1
voti

[4] Re: Confrontare due file testo riga per riga

Messaggioda Foto Utentetonnoto » 22 apr 2020, 17:21

E' vero, non me ne ero accorto; chiedo scusa.
Avatar utente
Foto Utentetonnoto
511 5
Frequentatore
Frequentatore
 
Messaggi: 187
Iscritto il: 10 feb 2016, 23:57

2
voti

[5] Re: Confrontare due file testo riga per riga

Messaggioda Foto Utentefairyvilje » 23 apr 2020, 0:26

"640K ought to be enough for anybody" Bill Gates (?) 1981
Qualcosa non ha funzionato...

Lo sapete che l'arroganza in informatica si misura in nanodijkstra? :D
Avatar utente
Foto Utentefairyvilje
12,5k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 2616
Iscritto il: 24 gen 2012, 19:23

0
voti

[6] Re: Confrontare due file testo riga per riga

Messaggioda Foto UtenteMax2433BO » 23 apr 2020, 10:57

@ Foto Utentetonnoto

... non ti preoccupare, può succedere... :ok:

@ Foto Utentefairyvilje

... effettivamente ho un output più limitato, adesso devo cercare di capire cosa mi vuole dire... :mrgreen:

O_/ Max
Disapprovo quello che dite, ma difenderò fino alla morte il vostro diritto di dirlo [attribuita a Voltaire]

Sapere sia di sapere una cosa, sia di non saperla: questa è conoscenza. [Confucio, "I colloqui"]
Avatar utente
Foto UtenteMax2433BO
12,0k 4 10 13
G.Master EY
G.Master EY
 
Messaggi: 2886
Iscritto il: 25 set 2013, 16:29
Località: Un puntino insignificante nell'universo!!

0
voti

[7] Re: Confrontare due file testo riga per riga

Messaggioda Foto UtenteDarwinNE » 23 apr 2020, 22:32

Forse puoi usare una regular expression per estrarre le righe che ti interessano e che contengono l'inizio di un nuovo componente, poi ordinarle come suggeriva Foto Utentefairyvilje ed infine utilizzare diff (o vim -d per aprire i due file, se ti piace questo editor).
Follow FidoCadJ development on Twitter: https://twitter.com/davbucci
Avatar utente
Foto UtenteDarwinNE
26,7k 5 11 13
G.Master EY
G.Master EY
 
Messaggi: 3742
Iscritto il: 18 apr 2010, 9:32
Località: Grenoble - France

0
voti

[8] Re: Confrontare due file testo riga per riga

Messaggioda Foto UtenteMax2433BO » 24 apr 2020, 7:48

DarwinNE ha scritto:Forse puoi usare una regular expression per estrarre le righe che ti interessano e che contengono l'inizio di un nuovo componente, poi ordinarle (...)


?%
Disapprovo quello che dite, ma difenderò fino alla morte il vostro diritto di dirlo [attribuita a Voltaire]

Sapere sia di sapere una cosa, sia di non saperla: questa è conoscenza. [Confucio, "I colloqui"]
Avatar utente
Foto UtenteMax2433BO
12,0k 4 10 13
G.Master EY
G.Master EY
 
Messaggi: 2886
Iscritto il: 25 set 2013, 16:29
Località: Un puntino insignificante nell'universo!!

2
voti

[9] Re: Confrontare due file testo riga per riga

Messaggioda Foto Utentexyz » 24 apr 2020, 11:04

Ti consigli di studiarti i comandi "diff" e soprattutto "patch", la versione originale fu scritta da Larry Wall (il creatore del Perl). Il comando "patch" riesce a rilevare spostamenti delle modifiche nel file destinazione e se non riesce ti segnala quale parte non è stata possibile processare.

http://man7.org/linux/man-pages/man1/diff.1.html
http://man7.org/linux/man-pages/man1/patch.1.html

Questo comando individua come funzione le righe che iniziano con "[...]" o "{...}"

Codice: Seleziona tutto
diff -urN --show-function-line="^[\[{].*[\]}]" file1.fcl file2.fcl

Esempio di output:

Codice: Seleziona tutto
--- file1.fcl   2020-04-24 10:48:04.768594980 +0200
+++ file2.fcl   2020-04-24 10:56:59.955432927 +0200
@@ -13,7 +13,6 @@
[ROD_ANT Antenna a stilo]
LI 100 95 100 100 0
EV 99 99 101 97 0
-LI 100 90 100 40 0
EP 99 38 101 40 0
RV 97 90 103 95 3
{Batterie}
@@ -30,6 +29,7 @@
[COAX_1_S Cavo coassiale 1 conduttore + schermo]
LI 100 100 150 100
LI 108 95 142 95
+LI 108 95 142 95
EV 106 95 110 105
EV 140 95 144 105
LI 108 105 142 105

il numeri che provi dopo i due caratteri "@@" sono spiegati qui:

https://en.wikipedia.org/wiki/Diff#Unified_format
Avatar utente
Foto Utentexyz
6.165 2 4 5
G.Master EY
G.Master EY
 
Messaggi: 1638
Iscritto il: 5 dic 2009, 18:37
Località: Italy Turin

1
voti

[10] Re: Confrontare due file testo riga per riga

Messaggioda Foto UtenteMax2433BO » 24 apr 2020, 11:12

Ti ringrazio Foto Utentexyz, avevo già provato a guardare la pagina man del comando diff ma, sinceramente mi ero perso: molto probabilmente non ho una mentalità sufficientemente "analitica" o forse è solo molto arrugginita e ci vuole tempo per farle capire le cose... :mrgreen:

... comunque tenterò nuovamente per vedere se riesco a capire qualcosa (... inoltre la mia scarsa padronanza dell'inglese sicuramente non aiuta... :? ).

O_/ Max
Disapprovo quello che dite, ma difenderò fino alla morte il vostro diritto di dirlo [attribuita a Voltaire]

Sapere sia di sapere una cosa, sia di non saperla: questa è conoscenza. [Confucio, "I colloqui"]
Avatar utente
Foto UtenteMax2433BO
12,0k 4 10 13
G.Master EY
G.Master EY
 
Messaggi: 2886
Iscritto il: 25 set 2013, 16:29
Località: Un puntino insignificante nell'universo!!


Torna a Linux

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti