Come usare il comando join su Linux
Fatmawati Achmad Zaenuri/Shutterstock
Se vuoi unire i dati da due file di testo facendo corrispondere un campo comune, puoi usare Linux |_+_| comando. Aggiunge un pizzico di dinamismo ai tuoi file di dati statici. Ti mostreremo come usarlo.
Corrispondenza dei dati tra i file
I dati sono re. Le aziende, le imprese e le famiglie lo corrono allo stesso modo. Ma i dati archiviati in file diversi e raccolti da persone diverse sono una seccatura. Oltre a sapere quali file aprire per trovare le informazioni desiderate, è probabile che il layout e il formato dei file siano diversi.
Devi anche affrontare il mal di testa amministrativo relativo a quali file devono essere aggiornati, di cui è necessario eseguire il backup, quali sono legacy e quali possono essere archiviati.
Inoltre, se hai bisogno di consolidare i tuoi dati o condurre alcune analisi su un intero set di dati, hai un ulteriore problema. Come razionalizzi i dati tra i diversi file prima di poter fare ciò che devi fare con essi? Come affronti la fase di preparazione dei dati?
La buona notizia è che se i file condividono almeno un elemento di dati comune, Linux |_+_| il comando può tirarti fuori dal pantano.
I file di dati
Tutti i dati che useremo per dimostrare l'uso del |_+_| comando è fittizio, a partire dai seguenti due file:
join
join
Quello che segue è il contenuto di |_+_|:
join
Annuncio pubblicitario Abbiamo una serie di righe numerate e ogni riga contiene tutte le seguenti informazioni:
- & rsaquo; Cyber Monday 2021: le migliori offerte tecnologiche
- & rsaquo; Cyber Monday 2021: le migliori offerte Apple
- › Funzioni e formule in Microsoft Excel: qual è la differenza?
- › 5 siti Web che ogni utente Linux dovrebbe aggiungere ai segnalibri
- › Come trovare il tuo Spotify Wrapped 2021
- › La cartella del computer è 40: come la star di Xerox ha creato il desktop
Quello che segue è il contenuto di |_+_|:
file-1.txt
Ogni riga in |_+_| contiene le seguenti informazioni:
Il |_+_| Il comando funziona con i campi, che, in questo contesto, significa una sezione di testo circondata da spazi, l'inizio di una riga o la fine di una riga. Per |_+_| per abbinare le righe tra i due file, ogni riga deve contenere un campo comune.
Pertanto, possiamo abbinare un campo solo se appare in entrambi i file. L'indirizzo IP appare solo in un file, quindi non va bene. Il nome appare solo in un file, quindi non possiamo usare neanche quello. Il cognome è in entrambi i file, ma sarebbe una scelta sbagliata, poiché persone diverse hanno lo stesso cognome.
Non puoi nemmeno collegare i dati insieme alle voci maschili e femminili, perché sono troppo vaghe. Anche le regioni di New York e i valori in dollari vengono visualizzati in un solo file.
Tuttavia, possiamo utilizzare l'indirizzo e-mail perché è presente in entrambi i file e ognuno è unico per un individuo. Una rapida occhiata ai file conferma anche che le righe in ciascuno corrispondono alla stessa persona, quindi possiamo usare i numeri di riga come campo da abbinare (in seguito useremo un campo diverso).
Annuncio pubblicitarioNota che ci sono un diverso numero di campi nei due file, il che va bene: possiamo dire |_+_| quale campo utilizzare da ogni file.
Tuttavia, fai attenzione a campi come le regioni di New York; in un file separato da spazi, ogni parola nel nome di una regione ha l'aspetto di un campo. Poiché alcune regioni hanno nomi di due o tre parole, hai effettivamente un numero diverso di campi all'interno dello stesso file. Questo va bene, a patto che corrisponda ai campi che appaiono nella riga prima delle regioni di New York.
Il comando di unione
Innanzitutto, il campo che stai per abbinare deve essere ordinato. Abbiamo numeri crescenti in entrambi i file, quindi soddisfiamo questi criteri. Per impostazione predefinita, |_+_| usa il primo campo in un file, che è quello che vogliamo. Un'altra impostazione predefinita è che |_+_| si aspetta che i separatori di campo siano spazi bianchi. Di nuovo, ce l'abbiamo, quindi possiamo andare avanti e accendere |_+_|.
Poiché utilizziamo tutte le impostazioni predefinite, il nostro comando è semplice:
file-2.txt
|_+_| considera i file come file uno e file due in base all'ordine in cui sono elencati nella riga di comando.
L'output è il seguente:
file-2.txt
L'output è formattato nel modo seguente: Viene stampato per primo il campo su cui sono state confrontate le righe, seguito dagli altri campi del file uno e quindi dai campi del file due senza il campo di confronto.
Campi non ordinati
Proviamo qualcosa che sappiamo non funzionerà. Metteremo le righe in un file fuori ordine così |_+_| non sarà in grado di elaborare il file correttamente. Il contenuto di |_+_| sono gli stessi di |_+_|, ma la riga otto è tra le righe cinque e sei.
Quello che segue è il contenuto di |_+_|:
join
Annuncio pubblicitario Digitiamo il seguente comando per provare a unire |_+_|a |_+_|:
join
|_+_| riporta che la settima riga in |_+_| è fuori servizio, quindi non viene elaborato. La riga sette è quella che inizia con il numero sei, che dovrebbe precedere l'otto in un elenco correttamente ordinato. La sesta riga nel file (che inizia con 8 Odell) è stata l'ultima elaborata, quindi ne vediamo l'output.
Puoi usare il |_+_| opzione se vuoi vedere se |_+_| è soddisfatto dell'ordinamento di un file: non verrà tentata alcuna fusione.
Per farlo, digitiamo quanto segue:
join
|_+_| ti dice in anticipo che ci sarà un problema con la riga sette del file |_+_|.
File con righe mancanti
In |_+_|, l'ultima riga è stata rimossa, quindi non c'è una riga otto. I contenuti sono i seguenti:
join
Annuncio pubblicitario Digitiamo quanto segue e, sorprendentemente, |_+_| non si lamenta ed elabora tutte le righe che può:
join
L'output elenca sette righe unite.
Il |_+_| (stampa non abbinabile) opzione dice |_+_| per stampare anche le righe che non possono essere abbinate.
Qui, digitiamo il seguente comando per dire |_+_| per stampare le righe del file uno che non possono essere abbinate alle righe del file due:
join
Sette righe sono abbinate e la riga otto del file uno viene stampata, senza corrispondenza. Non ci sono informazioni unite perché |_+_| non conteneva una riga otto a cui potesse essere abbinato. Tuttavia, almeno appare ancora nell'output in modo da sapere che non ha una corrispondenza in |_+_|.
Digitiamo quanto segue |_+_| (sopprimi le righe unite) per rivelare le righe che non hanno una corrispondenza:
join
Vediamo che la riga otto è l'unica che non ha una corrispondenza nel file due.
Corrispondenza con altri campi
Abbiniamo due nuovi file su un campo che non è quello predefinito (campo uno). Quello che segue è il contenuto del file-7.txt:
join
E quello che segue è il contenuto di file-8.txt:
file-3.txt
Annuncio pubblicitario L'unico campo sensato da utilizzare per l'adesione è l'indirizzo email, che è il campo uno nel primo file e il campo due nel secondo. Per adattarsi a questo, possiamo usare il |_+_| (archivia un campo) e |_+_| (file due campi) opzioni. Seguiremo questi con un numero che indica quale campo in ogni file deve essere utilizzato per l'adesione.
Digitiamo quanto segue per dire |_+_| per utilizzare il primo campo nel file uno e il secondo nel file due:
file-2.txt
I file vengono uniti nell'indirizzo e-mail, che viene visualizzato come primo campo di ogni riga nell'output.
Utilizzo di separatori di campo diversi
Cosa succede se hai file con campi separati da qualcosa di diverso dagli spazi bianchi?
I due file seguenti sono delimitati da virgole: l'unico spazio bianco è tra i nomi di luoghi composti da più parole:
file-3.txt
file-3.txt
Annuncio pubblicitario
Possiamo usare il |_+_| (carattere separatore) per dire |_+_| quale carattere utilizzare come separatore di campo. In questo caso, è la virgola, quindi digitiamo il seguente comando:
file-1.txt
Tutte le linee sono abbinate e gli spazi sono conservati nei toponimi.
Ignorando maiuscole e minuscole
Un altro file, |_+_|, è quasi identico a |_+_|. L'unica differenza è che alcuni indirizzi e-mail hanno una lettera maiuscola, come mostrato di seguito:
join
Quando ci siamo uniti |_+_| e |_+_|, ha funzionato perfettamente. Vediamo cosa succede con |_+_| e |_+_|.
Digitiamo il seguente comando:
file-3.txt
Abbiamo abbinato solo sei righe. Le differenze tra lettere maiuscole e minuscole hanno impedito l'unione degli altri due indirizzi e-mail.
Annuncio pubblicitarioTuttavia, possiamo usare |_+_| (ignora maiuscole e minuscole) opzione per forzare |_+_| per ignorare quelle differenze e confrontare i campi che contengono lo stesso testo, indipendentemente dal caso.
Digitiamo il seguente comando:
--check-order
Tutte le otto linee sono abbinate e unite con successo.
Mescolare e abbinare
In |_+_|, hai un potente alleato quando sei alle prese con una complicata preparazione dei dati. Forse hai bisogno di analizzare i dati, o forse stai cercando di modellarli in forma per eseguire un'importazione in un sistema diverso.
Non importa quale sia la situazione, sarai felice di avere |_+_| nel tuo angolo!
IMPARENTATO: I migliori laptop Linux per sviluppatori e appassionati
LEGGI SUCCESSIVODave McKay ha usato per la prima volta i computer quando era in voga il nastro di carta perforata, e da allora ha programmato. Dopo oltre 30 anni nel settore IT, ora è un giornalista tecnologico a tempo pieno. Durante la sua carriera ha lavorato come programmatore freelance, manager di un team internazionale di sviluppo software, project manager di servizi IT e, più recentemente, come Data Protection Officer. I suoi scritti sono stati pubblicati da howtogeek.com, cloudavvyit.com, itenterpriser.com e opensource.com. Dave è un evangelista di Linux e un sostenitore dell'open source.
Leggi la biografia completa