И это всё МОЁ

Периодически бывают задачи, где нужно объединить данные из нескольких не очень больших csv файлов.

Сделать что-то вроде select f1.*,f2.* from 1.csv f1 left join 2.csv f2 on f1.c = f2.c;

Обычно я делаю какую-то одноразовую ерунду типа такой:

tail -n +2 1.csv | (while read -r line; do 
colC="$(echo "$line" | awk -F',' '{print $3}')";
matches="$(tail -n +2 2.csv | awk -F',' '{print $2"|"$0}' | grep -E "^$colC\|" | sed 's/^[^|]*|//;s/^/;/' | tr -d '\n');"
echo "$line$matches";
done)

исходные файлы:

1.txt:

A,B,C
foo1,bar1,10
foo2,bar3,20
foo3,bar3,30

__
2.txt:

E,C,D
buz20,20,20
buz10,10,10
buz11,10,11

Выхлоп:

foo1,bar1,10;buz10,10,10;buz11,10,11;
foo2,bar3,20;buz20,20,20;
foo3,bar3,30;

Как подобное делать нормальнее? Больше интересует короткий и понятный вариант чем производительный.








 ,