LINUX.ORG.RU

Объединить два csv

 


0

2

Добрый день. Есть два csv-файла. Первый id,phone,login,mobile, второй id,login,realname. Из второго нужно взять таблицу realname и поместить в первый файл. Какой программой можно такое сделать?


id,login,realname. Из второго нужно взять таблицу realname

Вы имели ввиду колонку realname, Верно?
Тогда даже скрипт на питоне вы будете дольше писать :) Заходите в любой libreOffice/open/Excel/что там у вас. Открываете оба файла. Полностью копируете колонку realname - вставляете в первый файл и сохраняете. Profit, или я вас неправильно понял? :D

znenyegvkby ()
Ответ на: комментарий от znenyegvkby

Да, колонку) Я так и хотел сделать, открыл в Gnumeric, второй файл как-то неправильно отображает, все данные в одной колонке. Хотя в других программах он отображается корректно. Нельзя это на баше сделать?

dnb ()

1.txt

1; 1234567; login1; 911123467
2; 1234568; login2; 911123468
3; 1234569; login3; 911123469
4; 1234560; login4; 911123460

2.txt

2; login2; john
4; login4; vasia

По двум полям объединить таблицы нельзя, поэтому уберем из второго файла поле login.

cat 2.txt  | awk -F';' '{printf "%s; %s\n", $1, $3;}' > 2_without_login.txt
2;  john
4;  vasia

И теперь объединяем по полю id:

join -1 1 -2 1 -a1 -t ';' 1.txt 2_without_login.txt
1; 1234567; login1; 911123467
2; 1234568; login2; 911123468;  john
3; 1234569; login3; 911123469
4; 1234560; login4; 911123460;  vasia

Правда, это не «честный» csv. Если есть значения вида «abc;def», где точка с запятой внутри поля, то ничего не получится.

anonymous ()
Ответ на: комментарий от dnb

второй файл как-то неправильно отображает, все данные в одной колонке

разные разделители (; и , например). решается в настройках редактора

vostrik ★★★☆ ()
Ответ на: комментарий от dnb

Можно, но еще раз: вы будете это дольше писать :)

Я так и хотел сделать, открыл в Gnumeric, второй файл как-то неправильно отображает

Просто, скорее всего у вас выбран другой разделитель в настройках, поэтому так и выходит. С Gnumeric не работал, но вот у меня лично в libreOffice по умолчанию стоит запятая, и если сунуть файл с разделитем точки с запятой - то данные так же окажутся в одной колонке. Ибо не распрасятся. Поставьте LO, либо гляньте в настройках Gnumeric. Думаю что дело в этом. Скрипт вы дольше будете писать, поверьте мне, оно того не стоит.

znenyegvkby ()
Ответ на: комментарий от anonymous

Спасибо.

Нет, разделитель в них одинаковый, запятая.

dnb ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.