我有两个CSV文件,每个文件有2列,列名相同。 1.csv先生成,然后在1小时后生成2.csv。小号 o我希望看到每个业务部门的利润百分比增加和减少与上次报告相比。例如:业务单位B的增量为50%(((15-10)/ 10)* 100)。 然而对于C,它减少了50%。新的小时报告中还添加了一些新的业务单位(AG& JK),只能用于新的小时报告。然而,很少有企业单位(D)也从下一个小时移除,这可以被认为是不需要的。 所以基本上我需要如何比较和提取这些数据。
Busines Profit %
A 0
B 10
C 10
D 0
E 0
F 1615
G 0
Busines profit %
A 0
B 15
C 5
AG 5
E 0
F 1615
G 0
JK 10
更新要求:
Business Profits% Old profit % new Variation
A 0 0 0
B 10 15 50%
C 10 5 -50%
D 0 cleared
AG 5 New
E 0 0 0
F 1615 1615 0%
G 0 0 0%
JK 10 New
答案 0 :(得分:1)
我使用awk来完成这项工作,如下所示:
$ awk 'NR==FNR{ # process file2
a[$1]=$2 # hash second column, key is the first column
next # process the next record of file2
}
{ # process file1
if($1 in a==0) # if company not found in hash a
p="new" # it must be new
else
p=($2-a[$1])/(a[$1]==0?1:a[$1])*100 # otherwise calculate p%
print $1,p # output company and p%
}' file1 file2
A 0
B 50
C -50
AG new
E 0
F 0
G 0
JK new
带有适当分号的单行版本:
$ awk 'NR==FNR{a[$1]=$2;next}{if($1 in a==0)p="new";else p=($2-a[$1])/(a[$1]==0?1:a[$1])*100;print $1,p}' file1 file2