Я объединяю два CSV-файла.Для простоты я показываю только соответствующие столбцы.В обоих файлах содержится более четырех столбцов.
file_a.csv
col2, col6, col7, col17
a, b, c, 145
e, f, g, 101
x, y, z, 243
file_b.csv
col2, col6, col7, col17
a, b, c, 88
e, f, g, 96
x, k, l, 222
Вывод должен выглядеть следующим образом:
col2, col6, col7, col17, col18
a, b, c, 145, 88
e, f, g, 101, 96
Таким образом, col17 из file_b добавляется в file_a как col18, когда содержимое col2, col6 и col7 совпадает.
Я пробовал это:
awk -F, 'NR == FNR {a[$2,$6,$7] = $17;next;} {if (! (b = a[$2,$6,$7])) b = "N/A";print $0,FS,b;}' file_a.csv file_b.csv > out.csv
Вывод выглядит так:
col2, col6, col7, col17,
, col18
a, b, c, 145
, 88
e, f, g, 101
, 96
Итак, столбец 17 из file_b, который я пытаюсь добавить, добавляется, но отображается в новой строке.
Я думаю, это потому, что после каждой строки есть возврат каретки.из file_a и file_b.В Notepad ++ я вижу CRLF.Но я не могу от них избавиться.Кроме того, я бы предпочел не проходить два этапа: сначала избавиться от возврата каретки, а затем слить.Вместо этого, если я смогу обойти возврат каретки во время слияния, это будет намного быстрее.
Кроме того, я буду признателен, если вы скажете мне, как избавиться от пробелов до и после запятой, разделяющейобъединенная колонка.Обратите внимание, что я помещаю пробелы между столбцами и запятыми для других столбцов для лучшей читаемости.Это не так, как в реальных файлах.Но в объединенном файле действительно есть пробелы между col17 и "," и col18, и я не знаю почему.
Если вы настаиваете на том, чтобы пометить это как дубликат, пожалуйста, объясните в комментарии ниже, как ответына предыдущий вопрос (ы) решить мою проблему.Я попытался выяснить это по тем же предыдущим вопросам, но потерпел неудачу.