[Risolto] Vedere la corrispondenza tra due file nella bash

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
JordanDunk
Prode Principiante
Messaggi: 55
Iscrizione: lunedì 24 aprile 2017, 15:48
Desktop: Ubuntu
Distribuzione: Ubunto 16.10 | x86_64
Sesso: Maschile

[Risolto] Vedere la corrispondenza tra due file nella bash

Messaggio da JordanDunk »

Buongiorno a tutti, sono nuovo nell'ambiente bash e volevo scrivere uno script che confronti due file di testo.
Per esempio file1.txt contiene : Andrea:BigHouse:45:23
Luca:Luca_Ope:77:900
Giacomo:TheBoss:95:55
Antonio:Anto85:11:900
file2.txt contiene: Operaio:900
Imprenditore:23
Vice Presidente:320
Presidente:55

nello script vorrei scrivere un nome del file2.txt e lo script mi stampa il nome del file2.txt e solo il nome di quelli associati al file1.txt
es: se scrivo Operaio lo script mi dovrebbe stampare Operaio Luca
Antonio
inoltre se chiamo Vice Presidente mi dovrebbe segnalare che non ci sono persone

io ho provato con il join in mille modi ma non mi va non so perchè...
Grazie in anticipo
Ultima modifica di JordanDunk il martedì 9 maggio 2017, 11:11, modificato 1 volta in totale.
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: Vedere la corrispondenza tra due file nella bash. Help

Messaggio da crap0101 »

join non mi sembra lo strumento più adatto... meglio usare qualcosa tipo awk.

imho, eviterei il "confronto" come se stessi facendo un diff... la cosa migliore mi sembra leggere il primo file e salvare (internamente al programma) i dati in un formato usabile e, a quel punto, fare i confronti leggendo i dati dal secndo file.
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
JordanDunk
Prode Principiante
Messaggi: 55
Iscrizione: lunedì 24 aprile 2017, 15:48
Desktop: Ubuntu
Distribuzione: Ubunto 16.10 | x86_64
Sesso: Maschile

Re: Vedere la corrispondenza tra due file nella bash.

Messaggio da JordanDunk »

per esempio?
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: Vedere la corrispondenza tra due file nella bash.

Messaggio da crap0101 »

Codice: Seleziona tutto

crap0101@orange:/tmp/foo$ awk -F: -v q=Operaio 'FNR==NR {ids[$1]=$2} FNR!=NR && $4 == ids[q] {printf "%s: %s\n", q, $1}' file2 file1 
Operaio: Luca
Operaio: Antonio
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
JordanDunk
Prode Principiante
Messaggi: 55
Iscrizione: lunedì 24 aprile 2017, 15:48
Desktop: Ubuntu
Distribuzione: Ubunto 16.10 | x86_64
Sesso: Maschile

Re: Vedere la corrispondenza tra due file nella bash.

Messaggio da JordanDunk »

Ottimo grazie mille :) :)
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: Bing [Bot] e 3 ospiti