我有两个像这样排列的文件
File1.txt
Parameter1 20
Parameter2 30
File2.txt
Parameter1 30
Parameter2 60
我希望输出文件包含File1中的Parameters,File2中的Parameters以及File1.txt和File2.txt之间的%差异的值 如下所示。我正在尝试创建一个awk / bash脚本,但到目前为止还没能完成它。
Output.txt
Parameter1 20 30 50%
Parameter2 30 60 100%
答案 0 :(得分: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
可以替代:
答案 1 :(得分:2)
如果文件已排序,您可以使用join
和awk
:
join file1 file2 | awk 'v=($3-$2)*100/$2 {print $0, v"%"}'
为了您的输入,它会产生:
Parameter1 20 30 50%
Parameter2 30 60 100%
答案 2 :(得分:0)
使用awk
的解决方案是:
join file1 file2 | awk '{ print $1" "$2" "$3" "($2 + $3)"%"}'