CSV 文件操作

CSV 文件操作

我有两个 csv 文件,假设 A 和 B 。我意识到我不小心把事情搞混了,现在为了撤消这个错误,我想编写一个shell脚本,以便将文件A的第三列中的数据写入文件B的第四列中,并将文件B的第四列中的数据写入文件 B 写入文件 A 的第三列。我知道“cut”命令可用于从特定列获取数据,但我不知道使用什么命令以便在特定数字之后写入 csv 文件单行上分隔符的出现次数。

这样的脚本怎么写呢?

答案1

给定

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

答案2

awk是你的朋友

复制fileA“说”fileA.bakfileB“说” 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. 此解决方案假设您在问题中拥有相同数量的记录,fileAfileB从问题中了解到这一点。

相关内容