объединить два файла csv на основе условия

У меня два файла csv позволяют говорить, что A.csv и B.csv A.csv содержат (размер файла более 5 гб)

64.234 20.342 786 63.231 20.124 765 63.652 20.857 387 

B.csv содержит (размер файла более 5 гб)

  63.231 20.124 234 63.652 20.857 383 64.234 20.342 876 

Мне нужен финальный файл

  64.234 20.342 786 876 63.231 20.124 765 234 63.652 20.857 387 383 

Долгота и широта будут использоваться для условия Когда долгота и широта равны, тогда значение зоны wll будет сохранено, есть ли быстрое решение для этого, используя sed, скрипт или любые инструменты … !!!!

4 Solutions collect form web for “объединить два файла csv на основе условия”

Не существует быстрого решения вашей проблемы, поскольку входные файлы не сортируются. Однако вы могли бы сделать что-то подобное:

 join -o 0,1.2,1.3,2.3 <(sort A.csv) <(sort B.csv) 

Попробуйте с этим:

 for i in `awk '{print $1}' A.csv`; do t1=`awk -va="$i" '$1==a {print $3}' A.csv`; awk -F' ' -va="$i" -vb="$t1" '$1==a {print $1" "$2" "$3" " b }' B.csv; done 

Надеюсь, это помогло.

Хотя вопрос нечетен относительно того, какие поля следует использовать для объединения, похоже, что это поле1 и поле2 (с опечаткой в A.csv field2=20.875 вместо 20.857 ).

Если вам нужно присоединиться только к первому полю, решение Michaels в порядке.
Если вам нужно присоединиться к первым двум полям, вы можете использовать:

 join <(sed -e 's/ */:/' a.csv | sort) <(sed -e 's/ */:/' b.csv | sort) 

(вам может потребоваться настроить sed regex, если поля не разделены пробелами). Решение Ракеша довольно неэффективно, поскольку оно сканирует как A.csv и B.csv для каждой строки в A.csv .

При таком большом количестве данных вам следует рассмотреть возможность импорта данных в базу данных, создания индексов (широта, долгота), а затем вы можете получить свои результаты с помощью

 select a.latitude, a.longitude, a.value, b.value from a, b where a.latitude = b.latitude and a.longitude = b.longitude; 
  • 7z не исключает каталоги из файла исключений
  • объединить несколько одинаковых эхо-сигналов в один эхо из цикла for в bash
  • Расчет даты в скрипте для уведомлений
  • Как сравнить значения float в сценарии оболочки?
  • Как ожидать от PID от вызванного процесса?
  • Запустить скрипт при загрузке?
  • Задача Cron для удаления файлов старше 3 дней
  • Нужен скрипт для автоматизации конвертирования большого количества аудиофайлов в другой формат
  • Добавить значение в поле для заданного условия в определенном столбце файла
  • Контрольная переменная в заявлении case bash
  • Предотвращать создание сценария при генерации stdout при вызове из данной программы
  • Linux и Unix - лучшая ОС в мире.