Слияние CSVs с кошкой или другими методами

У меня есть CSVs из различных каталогов, которые имеют то же имя файла, и я хотел бы объединить их вместе и разместить их в новый каталог под тем же именем файла и затем циклично выполнить его через исходные папки.

CSVs имеет ту же структуру через из обоих источников.

Я искал хорошее решение для этого некоторое время, и мои unix/bash-skills столь не заточены для этой задачи, как я хочу, чтобы они были.

**Example**
    Source1/1.csv
    Source2/1.csv
    Output/1.csv
1
задан 15 September 2016 в 14:18

1 ответ

Обычно файл CSV так или иначе походит на это:

file1.csv:

a1,b1,c1,d1,e1
a2,b2,c2,d2,e2
a3,b3,c3,d3,e3

Теперь, если у нас есть второй файл CSV с совместимым форматом и размерами (тот же разделитель столбца, здесь , - и то же число столбцов, здесь 5) и без строки заголовка, содержащей заголовки для каждого столбца, как пример ниже:

file2.csv:

a4,b4,c4,d4,e4
a5,b5,c5,d5,e5

Затем мы можем просто связать эти два файла без потребности в любом преобразовании:

cat file1.csv file2.csv > output.csv

Результат был бы этим:

output.csv:

a1,b1,c1,d1,e1
a2,b2,c2,d2,e2
a3,b3,c3,d3,e3
a4,b4,c4,d4,e4
a5,b5,c5,d5,e5

Автоматически объединить все файлы в source1/ с одинаково именованными файлами в source2/ (принимающий существуют только файлы CSV и что все файлы в source1/ должен также существовать в source2/), храня результат в output/ с тем же именем файла следующая острота Bash сделает задание:

for f in source1/* ; do fname="$(basename -- "$f")" ; cat -- "source1/$fname" "source2/$fname" > "output/$fname" ; done
3
ответ дан 7 December 2019 в 12:38

Другие вопросы по тегам:

Похожие вопросы: