GNU/Linux >> Znalost Linux >  >> Linux

Jak spojit dva soubory CSV?

Použijte csvkit:

csvjoin -c email id_email.csv email_name.csv

nebo

csvjoin -c 2,1 id_email.csv email_name.csv

Revize 3 :

Musíte seřadit oba seznamy v e-mailu abecedně a poté se připojit. Vzhledem k tomu, že pole email 2. pole souboru1 a 1. pole souboru2:

sort -t , -k 2,2 file1.csv > sort1.csv
sort -t , -k 1,1 file2.csv > sort2.csv
join -t , -1 2 -2 1 sort1.csv sort2.csv > sort3.csv

význam parametru

-t ,   : ',' is the field separator
-k 2,2 : character sort on 2nd field
-k 1,1 : character sort on 1st field
-1 2   : file 1, 2nd field
-2 1   : file 2, 1st field
>      : output to file

produkuje

email,ID,name
email,ID,name
...

seřazené podle e-mailu abecedně.

Všimněte si, že pokud v některém souboru chybí jakýkoli e-mail, bude z výsledků vynechán.


Možná je to přehnané, ale můžete importovat do databáze (např. OpenOffice Base) jako dva druhy tabulek a definovat areport, který je požadovaným výstupem.

Pokud je import CSV problém, může import provést tabulkový procesor (např. OpenOffice Calc). Výsledek lze snadno přenést do databáze.


Linux
  1. Jak spojit dva textové soubory v Linuxu

  2. Jak rozdělit soubory CSV podle počtu zadaných řádků?

  3. Jak odstranit soubory vytvořené mezi dvěma časy?

  1. Jak porovnat obsah dvou tarballů

  2. Jak sloučit dva soubory pomocí AWK?

  3. jak spojit dva soubory konzistentně řádek po řádku

  1. Jak mohu porovnat dva soubory XML?

  2. Jak připojit/sloučit mnoho souborů mp3?

  3. Jak najít / vypsat všechny jedinečné soubory ve dvou adresářích?