将不同文件的列值除以常数,然后输出一个减去另一个

时间:2014-12-08 13:54:53

标签: bash awk solaris

我有两个表格

的文件

文件1:

#fileheader1
0 123
1 456
2 789
3 999
4 112
5 131
6 415
etc.

file2的:

#fileheader2
0 442
1 232
2 542
3 559
4 888
5 231
6 322
etc.

如何取每个列的第二列,除以一个值然后从另一个减去一个,然后用新值输出一个新的第三个文件?

我希望输出文件的格式为

#outputheader
0 123/c-422/k
1 456/c-232/k
2 789/c-542/k
etc.

其中c和k是我可以插入脚本的数字

我见过这个问题:subtract columns from different files with awk

但是我不知道如何使用awk自己做这个,有没有人知道如何做到这一点或者可以解释链接问题中发生了什么,所以我可以尝试修改它?

1 个答案:

答案 0 :(得分:2)

我写道:

awk -v c=10 -v k=20 '                        ;# pass values to awk variables
    /^#/ {next}                              ;# skip headers
    FNR==NR {val[$1]=$2; next}               ;# store values from file1
    $1 in val {print $1, (val[$1]/c - $2/k)} ;# perform the calc and print
' file1 file2

输出

0 -9.8
1 34
2 51.8
3 71.95
4 -33.2
5 1.55
6 25.4
etc. 0