Обработка файлов CSV

У меня два файла csv, скажем, A и B. Я понял, что я случайно перепутал ситуацию, и теперь, чтобы отменить ошибку, я хочу написать сценарий оболочки, чтобы данные в третьем столбце файла A были записаны в четвертом столбце файла B и данных в четвертом столбце файл B должен быть записан в третьем столбце файла A. Я знаю, что команда «cut» может использоваться для извлечения данных из определенных столбцов, но я не знаю, какую команду использовать для записи в файл csv после определенного номера вхождения разделителя в одну строку.

Как написать такой скрипт?

  • Обработка таблицы с разделенными запятыми значениями в разных столбцах
  • Смутно о том, как преобразовать XML в CSV с помощью xmlstarlet в OS X?
  • изменять ненулевые заполненные часы и минуты в 24 часа
  • Вычисление среднего значения в awk на основе состояния столбца в csv
  • Удалить строки из файла, который существует в другом файле с более новой меткой времени
  • заменить столбец csv-файла на столбец из другого файла
  • удаление данных из txt-файла
  • Как получить строки, чей n-й столбец содержит m-й столбец
  • 2 Solutions collect form web for “Обработка файлов CSV”

    Данный

     A.csv: 1,2,V,4 B.csv: X,Y,Z,3 

    затем

     paste -d, <(cut -d, -f1,2 A.csv) <(cut -d, -f4 B.csv) <(cut -d, -f4 A.csv) 1,2,3,4 

    awk – ваш друг

    Сделайте копию fileA чтобы сказать fileA.bak & fileB чтобы сказать fileB.bak :

     #first changing fileB awk -v FS="," 'NR==FNR{fileA[i++]=$3;next}{$4=fileA[j++];print}' fileA.bak fileB.bak > fileB #fileB should be Okay now. #now changing fileA awk -v FS="," 'NR==FNR{fileB[i++]=$4;next}{$3=fileA[j++];print}' fileB.bak fileA.bak > fileA #fileA should be Okay now. #verify that you have the desired contents in both fileA & fileB #Now delete the backup files rm fileA.bak fileB.bak 

    Заметки
    1. Можно комбинировать оба сценария awk но почему их разделение делает вещи более четкими и читаемыми.
    2. Это решение предполагает, что у вас одинаковое количество записей в fileA и fileB как понятно из вопроса.

    Linux и Unix - лучшая ОС в мире.