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

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