File2.csv:
我想用configSku,selectedSku,config_id
File2.csv中的内容替换File1.csv中的内容configSku,selectedSku,config_id
。最终结果应如下所示:
以下是下载文件的链接,因此您可以自己尝试:
这是我尝试过但仍然失败的方法:
#!/bin/bash
INPUT=/tmp/file2.csv
OLDIFS=$IFS
IFS=,
[ ! -f $INPUT ] && { echo "$INPUT file not found"; exit 99; }
echo "no,my_account,form_token,fingerprint,configSku,selectedSku,config_id,address1,item_title" > /tmp/temp.csv
while read item_title configSku selectedSku config_id
do
cat /tmp/file1.csv |
awk -F ',' -v item_title="$item_title" \
-v configSku="$configSku" \
-v selectedSku="$selectedSku" \
-v config_id="$config_id" \
-v OFS=',' 'NR>1{$5=configSku; $6=selectedSku; $7=config_id; $9=item_title; print}' >> /tmp/temp.csv
done < <(tail -n +2 "$INPUT")
IFS=$OLDIFS
我该怎么做呢 ?
如果我正确理解了该问题,该如何使用:
paste -d, file1.csv file2.csv | awk -F, -v OFS=',' '{print $1,$2,$3,$4,$11,$12,$13,$8,$10}'
这不如另一个答案那么健壮,并且假定file1.csv
和file2.csv
具有相同的行数,并且一个文件中的每一行对应于另一文件中的同一行。输出如下所示:
no,my_account,form_token,fingerprint,configSku,selectedSku,config_id,address1,item_title
1,account1,asdf234safd,sd4d5s6sa,NEWconfigSku1,NEWselectedSku1,NEWconfig_id1,myaddr1,Samsung Handsfree
2,account2,asdf234safd,sd4d5s6sa,NEWconfigSku2,NEWselectedSku2,NEWconfig_id2,myaddr2,Xiaomi Mi headset
3,account3,asdf234safd,sd4d5s6sa,NEWconfigSku3,NEWselectedSku3,NEWconfig_id3,myaddr3,Ear Headphones with Mic
4,account4,asdf234safd,sd4d5s6sa,NEWconfigSku4,NEWselectedSku4,NEWconfig_id4,myaddr4,Handsfree/Headset
第一部分paste
用于将文件并排放置,并以逗号分隔,因此-d
可以选择。然后,最终得到一个包含13列的组合文件。该awk
部分首先说明输入和输出字段分隔符应为逗号(-F,
和-v OFS=','
分别为),然后打印所需的列(1-4
第一个文件的列,然后2-4
是第二个文件的列,此列现在与11-13
合并文件上的列相对应)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句