[Risolto] Differenza contenuto due file

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
Pehua
Prode Principiante
Messaggi: 241
Iscrizione: martedì 19 aprile 2022, 9:02
Desktop: Ubuntu
Distribuzione: Ubuntu 22.04.4 LTS
Sesso: Maschile

[Risolto] Differenza contenuto due file

Messaggio da Pehua »

Salve a tutti, avrei necessità di confrontare due file che contengono entrambe una lista di pacchetti installati, ciò che vorrei sapere è quali pacchetti ci sono in più in una delle due liste, la cosa "semplice" che vorrei, sarebbe avere nella scrivania un file che mi scriva solo i pacchetti di differenza fra le due liste, delle due liste solo una ne contiene di più ma non so quale delle due, faccio un esempio:

Lista-1

Codice: Seleziona tutto

pacchetto-1
pacchetto-2
pacchetto-3
Lista-2

Codice: Seleziona tutto

pacchetto-1
pacchetto-2
Risultato del comando a me sconosciuto, in $HOME/Scrivania/risultato:

Codice: Seleziona tutto

pacchetto-3
Ho cercato in rete ma ho trovato comandi che richiedono di installare pacchetti o programmi etc...
Non ci credo che con un comando o dei comandi bash non si possa avere u risultato cosi semplice, ma non so quale/i comando/i usare, qualcuno sa darmi una dritta?

Grazie
Ultima modifica di Pehua il lunedì 27 marzo 2023, 6:39, modificato 1 volta in totale.
Al di la delle impostazioni culturali :birra:
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4446
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: Differenza contenuto due file

Messaggio da UbuNuovo »

Puoi usare comm

Codice: Seleziona tutto

8-) cat lista1
pacchetto-1
pacchetto-2
pacchetto-3
8-) cat lista2
pacchetto-1
pacchetto-2
8-) comm -3 lista1 lista2
pacchetto-3
Altrimenti potresti usare il comando diff, ma andrebbe ripulito l'output.

se sai qual è il file con più linee

Codice: Seleziona tutto

8-) grep -v -f lista2 lista1
pacchetto-3
Ci sarebbero tanti modi, il più semplice, per quel che vuoi ottenere, mi pare comm
Salva l'Ucraina! 🇺🇦
Avatar utente
Pehua
Prode Principiante
Messaggi: 241
Iscrizione: martedì 19 aprile 2022, 9:02
Desktop: Ubuntu
Distribuzione: Ubuntu 22.04.4 LTS
Sesso: Maschile

Re: Differenza contenuto due file

Messaggio da Pehua »

UbuNuovo ha scritto:
domenica 26 marzo 2023, 23:30
Puoi usare comm

Codice: Seleziona tutto

8-) cat lista1
pacchetto-1
pacchetto-2
pacchetto-3
8-) cat lista2
pacchetto-1
pacchetto-2
8-) comm -3 lista1 lista2
pacchetto-3
Altrimenti potresti usare il comando diff, ma andrebbe ripulito l'output.

se sai qual è il file con più linee

Codice: Seleziona tutto

8-) grep -v -f lista2 lista1
pacchetto-3
Ci sarebbero tanti modi, il più semplice, per quel che vuoi ottenere, mi pare comm
Ciao Ubu, grazie.

Ho trovato anche io diff e sdiff ed ho trovato questa soluzione che comunque mi da un risultato abbastanza buono:

Codice: Seleziona tutto

sdiff pacchetti 24-03-23-pacchetti | grep ">" > $HOME/Scrivania/risultato
Anche comm lo proverò che mi pare buono. Ma il -3 è un flag o perche ci sono 3 voci? Do un occhio al man :)

Buona giornata!! :birra:
Al di la delle impostazioni culturali :birra:
rai
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2848
Iscrizione: domenica 11 maggio 2008, 18:03
Desktop: plasma
Distribuzione: 22.04
Località: Palermo

Re: [Risolto] Differenza contenuto due file

Messaggio da rai »

Ci sarebbero tanti modi, il più semplice, per quel che vuoi ottenere, mi pare comm
lo penso anch'io ma non è detto che gli elenchi di pacchetti siano ordinati: quindi bisogna dire esplicitamente a comm di ignorare il mancato ordinamento con l'opzione --nocheck-order oppure passare i file dopo averli sortati

Codice: Seleziona tutto

comm -3 <(sort lista1) <(sort lista2)
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4446
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: [Risolto] Differenza contenuto due file

Messaggio da UbuNuovo »

Ciao Rai, hai fatto bene a farlo notare, ho dimenticato di dire che i dati devono essere ordinati, anzi su liste che possono contenere doppioni meglio usare sort -u

Codice: Seleziona tutto

comm -3 <(sort -u lista1) <(sort -u lista2)
Salva l'Ucraina! 🇺🇦
Avatar utente
Pehua
Prode Principiante
Messaggi: 241
Iscrizione: martedì 19 aprile 2022, 9:02
Desktop: Ubuntu
Distribuzione: Ubuntu 22.04.4 LTS
Sesso: Maschile

Re: [Risolto] Differenza contenuto due file

Messaggio da Pehua »

Ciao Rai e UbuNuovo, grazie dell ulteriore informazione, infatti dava un messaggio (comm) che le liste non erano ordinate.

Vorrei aggiungere anche se ben poco c' entra con il 3d ma è il principale motivo che mi ha spinto a scrivere questa discussione, che se aveste problemi a richiamare in terminale con sudo, la soluzione sta nell' installare dbus-x11, in questo modo verrà lanciato e senza alcun errore.

Avevo dai backup diverse liste di pacchetti installati e volevo capire quale interferisse con questo problema, a cio mi serviva la comparazione, e bene, ho anche capito che il problema di fondo era il pacchetto dbus-x11 che se non installato, a quanto pare, non fa lanciare il terminale con sudo.

Avevo fatto delle ricerche nello specifico ma tutte risposte con spiegazioni, in inglese, ma n ulla che mi portasse alla soluzione, anche per questo ci tenevo a scriverlo qui, parlo del problema con dbus-x11 che a quanto pare nessuno scrive sia la soluzione a tale problema o comunque io non l' ho trovato in rete ma grazie alla comparazione del pacchetti si.

Tutto bene quel che finisce bene e non si finisce mai di apprendere qualcosa. :birra:
Al di la delle impostazioni culturali :birra:
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 15 ospiti