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

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

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

  • Как распечатать CSV / таблицу из результатов SQuirreL?
  • Реструктуризация CSV-файла
  • Как изменить / упорядочить данные в файле с помощью Awk
  • Таблицы, удобные для командной строки
  • Сравните файл с столбцом другого файла
  • Чтение столбцов из файла, затем столбец в exsisting CSV-файл
  • текст для создания файла xls
  • Как получить число символов в одном столбце?
  • 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 как понятно из вопроса.

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