Bash 从其他CSV文件中查找匹配值,然后将匹配值作为新列追加回CSV文件中
我有2个CSV文件,其中包含500多行 1包含产品信息Bash 从其他CSV文件中查找匹配值,然后将匹配值作为新列追加回CSV文件中,bash,shell,csv,Bash,Shell,Csv,我有2个CSV文件,其中包含500多行 1包含产品信息 ID, names, url, color, size p01, abc, uploads/abc.jpg, red, M P02, abz, uploads/abz.jpg, yellow, S p03, xyz, uploads/xyz.jpg, green, L p04, qwe, uploads/qwe.jpg, blue, XL 另一个包含与该产品相关的图像位置,一个产品有多个IMG ID, product_id, url 01
ID, names, url, color, size
p01, abc, uploads/abc.jpg, red, M
P02, abz, uploads/abz.jpg, yellow, S
p03, xyz, uploads/xyz.jpg, green, L
p04, qwe, uploads/qwe.jpg, blue, XL
另一个包含与该产品相关的图像位置,一个产品有多个IMG
ID, product_id, url
01, p01, uploads/item/asa.jpg
02, p01, uploads/item/aza.jpg
03, p01, uploads/item/dna.jpg
04, p01, uploads/item/adn.jpg
05, p02, uploads/item/bka.jpg
06, p02, uploads/item/bda.jpg
07, p04, uploads/item/cde.jpg
这样的结果
ID, names, url, color, size, thumb1, thumb2, thumb3, thumb4, ....
p01, abc, uploads/abc.jpg, red, M, uploads/item/asa.jpg, uploads/item/aza.jpg, uploads/item/dna.jpg, uploads/item/adn.jpg
P02, abz, uploads/abz.jpg, yellow, S, uploads/item/bka.jpg, uploads/item/bda.jpg
p03, xyz, uploads/xyz.jpg, green, L,
p04, qwe, uploads/qwe.jpg, blue, XL, uploads/item/cde.jpg
那个么,我可以在航站楼做些什么呢 您可以使用awk:
awk 'BEGIN{FS=OFS=", "}
NR==1{print "ID, names, url, color, size, thumbnails"; next}
FNR==NR{$2=tolower($2); a[$2] = (a[$2]?a[$2] ", " $3:$3); next}
FNR>1{print $0, a[tolower($1)]}' file2 file1
输出:
ID, names, url, color, size, thumbnails
p01, abc, uploads/abc.jpg, red, M, uploads/item/asa.jpg, uploads/item/aza.jpg, uploads/item/dna.jpg, uploads/item/adn.jpg
P02, abz, uploads/abz.jpg, yellow, S, uploads/item/bka.jpg, uploads/item/bda.jpg
p03, xyz, uploads/xyz.jpg, green, L,
p04, qwe, uploads/qwe.jpg, blue, XL, uploads/item/cde.jpg
第二个文件中的大写字母P是什么?您好,这是idYeah的产品,在我将OFS=“,”更改为OFS=“,”(删除空格)后,它工作得非常好。谢谢你,阿努巴瓦,你的awk是岩石!