2014-03-05 44 views
0

%的差异我被安排这样合并两个文件获得UNIX

File1.txt 
Parameter1 20 
Parameter2 30 

File2.txt 
Parameter1 30 
Parameter2 60 

我想要的输出文件包含的参数在文件1,参数在文件2的值的两个文件,并%之间的差异File1.txt和File2.txt ,如下所示。我正在尝试制作一个awk/bash脚本,但迄今为止无法正确使用它。

Output.txt 
Parameter1 20 30 50% 
Parameter2 30 60 100% 
+1

考虑编辑您的问题,向我们展示您尝试过的内容以及您的当前输出。祝你好运。 – shellter

回答

2

如果文件排序,你可以使用joinawk

join file1 file2 | awk 'v=($3-$2)*100/$2 {print $0, v"%"}' 

您的输入,它会产生:

Parameter1 20 30 50% 
Parameter2 30 60 100% 
0

使用awk的解决方案是:

join file1 file2 | awk '{ print $1" "$2" "$3" "($2 + $3)"%"}' 
3

这也许应该这样做:

awk 'NR==FNR{A[$1]=$2; next}{print $0, A[$1], (A[$1]/$2-1)*100 "%"}' file2 file1 

,或者,如果如果这两个文件的第一个字段是在同一顺序:

awk '{v=$2} getline<f{print $0, v, (v/$2-1)*100 "%"}' f=file1 file2 

对于join工作的文件需要按排序顺序排列

paste如果两个文件的第一个字段的顺序相同,则可以替代: