#!/bin/bash

# ideone boilerplate: run in temp dir
t=$(mktemp -d -t ideone.XXXXXXXX) || exit
trap 'rm -rf "$t"' ERR EXIT
cd "$t"

cat <<\: >first.csv
"Hello, how are you","honey"
23,456
:

cat <<\: >second.csv
another,one,bites,the,dust
1,2,3,4,5
:

cat <<\: >third.csv
"all in all, it's just","another brick in the wall"
pink,floyd
:

cat <<\: >merge.py
import csv
import sys

fields = 0
for filename in sys.argv[1:]:
    with open(filename) as raw:
        for row in csv.reader(raw):
            if len(row) > fields:
                fields = len(row)
                titles = row
            break

writer = csv.writer(sys.stdout)
writer.writerow(titles)

for filename in sys.argv[1:]:
    with open(filename) as raw:
        for idx, row in enumerate(csv.reader(raw)):
            if idx == 0:
                next
        row.extend([''] * (fields - len(row)))
        writer.writerow(row)
:

python3 merge.py *.csv
